在iPhone设备中下载文件

时间:2015-09-09 09:48:57

标签: ios objective-c download asihttprequest

我有一个文件网址,想要在我的iPhone文件目录中下载。这样我就可以在其他应用程序中使用这个下载的文件,比如在whatsApp上,在电子邮件附件中共享它等。

我正在使用ASIHTTPRequest,我应该设置哪条目标路径?

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:self.ImageURL];
[request setDownloadDestinationPath:@"What Path I should Set"];
[request startSynchronous];

以下是我要下载的文件的示例网址: http://www.fourspan.com/apps/agentreview/public/img/ads/1441791507_Muhammad.jpg

1 个答案:

答案 0 :(得分:0)

首先,ASIHTTPRequest已过时,请避免使用它。

以下是使用AFNetworking下载任何文件并将其保存到您想要的任何位置的代码( savePath

#define kDocumentsDirPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]

- (void)downloadFile:(NSString *)filePath
{

AFURLSessionManager *sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:filePath]];

NSURLSessionDownloadTask *downloadTask = [sessionManager downloadTaskWithRequest:request
                                                                        progress:nil
                                                                     destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {

                                                                         NSString *savePath = [kDocumentsDirPath stringByAppendingPathComponent:fileName];

                                                                         return [NSURL fileURLWithPath:savePath];

                                                                     }
                                                               completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

                                                                   if (error)
                                                                   {
                                                                       NSLog(@"Download failed for %@: %@", fileName, error.localizedDescription);

                                                                       [[[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Failed to download %@", fileName]
                                                                                                  message:error.localizedDescription
                                                                                                 delegate:nil
                                                                                        cancelButtonTitle:@"Uh Oh"
                                                                                         otherButtonTitles:nil] show];
                                                                   }
                                                                   else {

                                                                       NSLog(@"File downloaded: %@", fileName);
                                                                   }
                                                               }];
[downloadTask resume];
}