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

时间:2011-03-25 18:29:28

标签: objective-c cocoa ios macos iphone

我想知道如何使用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,我想保存它。感谢任何想法。

1 个答案:

答案 0 :(得分:5)

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

  

suggestedFilename

     

返回建议的内容   响应数据的文件名。

     
      
  • (NSString *)suggestFilename
  •   
     

返回值

     

建议的文件名   回应数据。

     

<强>讨论

     

该方法尝试创建   使用以下内容的文件名   顺序:

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

  2.   
  3. 最后一条路   URL的组件。

  4.   
  5. 主持人   URL。

  6.         

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

         

    在大多数情况下,此方法会附加   适当的文件扩展名基于   MIME类型。这种方法总是如此   无论如何返回有效的文件名   是否保存资源   到磁盘。

         

    <强>状况

         

    适用于iOS 2.0和   后来。在NSURLResponse.h中声明