2011-07-08 84 views
2

當前使用SSZipArchive方法下載zip文件並在Documents目錄文件夾下解壓縮。我正在從URL下載zip文件名並且當前不知道文件名,因爲每次有更新時它都會更改。如何在收到我的數據時檢索文件名?如何獲取正在iphone中下載的zip文件名

- (void)viewDidLoad { 
    fileManager = [NSFileManager defaultManager]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    directoryPath = [paths objectAtIndex:0]; 
    filePath = [NSString stringWithFormat:@"%@/ZipFiles.zip", directoryPath]; 

    NSURL *url=[NSURL URLWithString:@"http://www.abc.com/test/test.cfc?id=123"]; 

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:url]; 
    [request setHTTPMethod:@"POST"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 

NSError *error; 
NSURLResponse *response; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

[fileManager createFileAtPath:filePath contents:urlData attributes:nil]; 
[SSZipArchive unzipFileAtPath:filePath toDestination:directoryPath]; 

NSString *responseString = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding]; 


///***Answer to my own question for future needs****// 
    NSString *fileName = [response suggestedFilename]; 

} 

回答

5

NSURLResponse有一個方法- (NSString *)suggestedFilename這將試圖在這個以獲取文件名。

  1. 使用內容處置標題指定的文件名。
  2. URL的最後一個路徑組件。
  3. URL的主機。

content disposition頭將是最好的解決辦法,所以要確保服務器設置它。

+0

喬:謝謝你的工作。只是想問你一個關於同一主題的簡單問題:你將如何通過HTTPRequest發送文件名爲POST?就像我可以如何使用它作爲字符串並將其作爲POST發送? – lifemoveson

+0

我並不確定,因爲我還沒有嘗試購買嘗試發送內容處置標題,然後檢查在服務器上。 – Joe