如何获取在iphone中下载的zip文件名

时间:2011-07-08 17:42:06

标签: iphone objective-c zip nsurlconnection

目前使用SSZipArchive方法下载zip文件并在Documents目录文件夹中解压缩。我正在从URL下载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];

}

1 个答案:

答案 0 :(得分:5)

NSURLResponse有一个方法- (NSString *)suggestedFilename,它会尝试按此顺序获取文件名。

  1. 使用内容处置标头指定的文件名。
  2. 网址的最后一个路径组件。
  3. 网址的主机。
  4. content disposition标头是最佳解决方案,因此请确保服务器设置它。