本文简单介绍利用AFNetWorking下载网络上的视频文件,并且存储到iOS的沙盒中。下载其他类型文件同理,直接上代码。
获取沙盒中的Documents地址的代码。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
假设视频文件的网络url为http://www.abc.com/test.mp4,下载到iOS沙盒中的文件名为test.mp4。
利用如下代码便可实现视频文件的下载和存储, 注意在生成网络url的时候使用NSURL的类方法URLWithString,这样才可以请求网络url,使用fileURLWithPath用来访问本地文件。这是我遇到的一个不大不小的坑,浪费了不少时间。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *fullPath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"test.mp4"];
NSURL *url = [NSURL URLWithString:@"http://www.abc.com/test.mp4"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDownloadTask *task =
[manager downloadTaskWithRequest:request
progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
return [NSURL fileURLWithPath:fullPath];
}
completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
}];
[task resume];