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

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

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.txt"]; 

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

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

在NSURLConnection委托callback- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response您可以从NSURLResponse检索suggestedFileNameNSURLResponse 。 如果你不知道名字,那么你需要为你的文件提出另一个名字。 此时,您可以在开始保存数据之前指定您的下载path。

suggestedFilename

返回响应数据的build议文件名。

  • (NSString *)build议文件名

返回值

build议的响应数据的文件名。

讨论

该方法尝试使用以下命令创build文件名,顺序如下:

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

  2. URL的最后一个path组件。

  3. url的主机。

如果URL的主机不能转换为有效的文件名,则使用文件名“unknown”。

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

可用性

在iOS 2.0及更高版本中可用。 在NSURLResponse.h中声明