ファイルへの URL アドレスを指定する iPhone プログラムのメソッドを作成しようとすると、iOS アプリのドキュメント ディレクトリにダウンロードされます。
AFNetowrking のドキュメントに従うと、ファイル名が常にゴミであることを除けば、問題なく動作するようです。
プロジェクトに AFNetworking 2.0 を追加した Xcode 5 を使用しています。これが私がこれまでに持っているコードです:
//#import "AFURLSessionManager.h"
//On load (or wherever):
[self downloadFile:@"http://www.irs.gov/pub/irs-pdf/fw4.pdf"];
-(void)downloadFile:(NSString *)UrlAddress
{ NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:UrlAddress];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response)
{
NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
return [documentsDirectoryPath URLByAppendingPathComponent:[targetPath lastPathComponent]];
}
completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error)
{
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
}
最終的に、ファイルはドキュメント ディレクトリに正常にダウンロードされますが、名前が文字化けしています。
ファイルのダウンロード先: file:///Users/myname/Library/Application%20Support/iPhone%20Simulator/7.0/Applications/25188DCA-4277-488E-B08A-4BEC83E59194/Documents/CFNetworkDownload_60NWIf.tmp
私が期待している最終結果:
ダウンロードしたファイル: file:///Users/myname/Library/Application%20Support/iPhone%20Simulator/7.0/Applications/25188DCA-4277-488E-B08A-4BEC83E59194/Documents/fw4.pdf
プロジェクトに AFNetworking を追加するために cocoapods を使用しました: pod 'AFNetworking', "~> 2.0"
最後に、ダウンロードの進行状況を取得するにはどうすればよいですか?