NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"%f",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
double progressValue = 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount;
if (progress) progress(downloadProgress, progressValue);
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
//- block的返回值, 要求返回一个URL, 返回的这个URL就是文件的位置的路径
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [cachesPath stringByAppendingPathComponent:response.suggestedFilename];
return [NSURL fileURLWithPath:savedPath != nil ? savedPath : path];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
// filePath就是下载文件的位置,可以直接拿来使用
NSData *data;
if (!error) {
data = [NSData dataWithContentsOfURL:filePath];
NSLog(@"下载地址:%@",filePath);
}
if (complete) complete(data, error);
}];
//默认下载操作是挂起的,须先手动恢复下载。
[downloadTask resume];
}
网友评论