如何从URL中下载文件(iOS/Cocoa SDK),其中文件名不是URL的一部分

Kun*_*Deo 3 iphone macos cocoa objective-c ios

我想知道如何使用NSUrl下载文件,其中文件名不可用或不是请求URL的一部分.我一直在寻找ASIHTTPRequest(http://allseeing-i.com/ASIHTTPRequest/)库.它有

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.txt"];
Run Code Online (Sandbox Code Playgroud)

但重点是你需要知道文件名.例如,如果你把URL(不是真正的URL)http://some-website/foo.pdf

它下载了一个文件foo.pdf,我想保存它.任何想法谢谢.

Joe*_*Joe 5

在NSURLConnection的委托回调- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response可以检索suggestedFileNameNSURLResponse.如果您对名称不了解,那么您需要为您的文件提供另一个名称.此时,您可以在开始保存数据之前指定下载路径.

suggestedFilename

返回响应数据的建议文件名.

  • (NSString*)suggestFilename

回报价值

响应数据的建议文件名.

讨论

该方法尝试按顺序使用以下命令创建文件名:

  1. 使用内容处置标头指定的文件名.

  2. URL的最后一个路径组件.

  3. URL的主机.

如果无法将URL主机转换为有效文件名,则使用文件名"unknown".

在大多数情况下,此方法会根据MIME类型附加正确的文件扩展名.无论资源是否保存到磁盘,此方法都将始终返回有效的文件名.

可用性

适用于iOS 2.0及更高版本.在NSURLResponse.h中声明