我想知道如何使用NSUrl下载文件,其中文件名不可用或不是请求URL的一部分。我一直在寻找ASIHTTPRequest(http://allseeing-i.com/ASIHTTPRequest/)库。它有
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.txt"];
但重点是你需要知道文件名。例如,如果您输入网址(不是真实网址)http://some-website/foo.pdf
它下载了一个文件foo.pdf,我想保存它。感谢任何想法。
答案 0 :(得分:5)
在NSURLConnection委托回调- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
中,您可以从NSURLResponse
检索suggestedFileName
。如果您对名称不了解,那么您需要为您的文件提供另一个名称。此时,您可以在开始保存数据之前指定下载路径。
suggestedFilename
返回建议的内容 响应数据的文件名。
- (NSString *)suggestFilename
返回值
建议的文件名 回应数据。
<强>讨论强>
该方法尝试创建 使用以下内容的文件名 顺序:
使用内容指定的文件名 处置标题。
最后一条路 URL的组件。
- 醇>
主持人 URL。
如果主机的URL不能 转换为有效的文件名, 文件名“未知”被使用。
在大多数情况下,此方法会附加 适当的文件扩展名基于 MIME类型。这种方法总是如此 无论如何返回有效的文件名 是否保存资源 到磁盘。
<强>状况强>
适用于iOS 2.0和 后来。在NSURLResponse.h中声明