如何从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
检索suggestedFileName
的NSURLResponse
。 如果你不知道名字,那么你需要为你的文件提出另一个名字。 此时,您可以在开始保存数据之前指定您的下载path。
suggestedFilename
返回响应数据的build议文件名。
- (NSString *)build议文件名
返回值
build议的响应数据的文件名。
讨论
该方法尝试使用以下命令创build文件名,顺序如下:
使用内容处置标题指定的文件名。
URL的最后一个path组件。
url的主机。
如果URL的主机不能转换为有效的文件名,则使用文件名“unknown”。
在大多数情况下,该方法会根据MIMEtypes追加正确的文件扩展名。 无论资源是否保存到磁盘,此方法将始终返回有效的文件名。
可用性
在iOS 2.0及更高版本中可用。 在NSURLResponse.h中声明