优缺点
优点:不需要担心内存(一边下载一边存入沙盒)
缺点:无法监听文件下载
具体使用
1.确定URL
NSURL *url = [NSURL URLWithString:@""];
2.创建请求对象
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
3.创建会话对象
NSURLSession *session = [NSURLSession sharedSession];
4.创建Task
第一个参数:请求对象
第二个参数:completionHandler 回调
location 文件的临时存储路径
response 响应头
error 错误信息
//该方法内部已经实现了边接收文件边写数据进沙盒(tmp)的操作,不过让任务结束后自动又删除,所以需要做一个剪切操作
response响应头中有一个属性(suggestedFilename)可以直接拿到文件路径的最后一个节点
NSURLSessionDownloadTask *downTask = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//6.拼接文件全路径
NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
//6.1剪切文件
[[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL URLWithString:fullPath] error:nil];
}];
5.执行Task
[downTask resume];