断点续传

  • 时间:2020-04-24 20:58 作者:路灯下的黑猫 来源: 阅读:526
  • 扫一扫,手机访问
摘要:@interface ViewController ()@property (weak, nonatomic) IBOutlet UIProgressView *progressView;/* 下载文件的工具 **/@property (nonatomic, strong) NSURLSession

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIProgressView *progressView;

/* 下载文件的工具 **/

@property (nonatomic, strong) NSURLSessionDownloadTask *task;

@property (nonatomic, strong) NSData *resumeData;

@property (nonatomic, strong) NSURLSession *session;

@end

@implementation ViewController

- (void)viewDidLoad {

? ? [super viewDidLoad];

}

#pragma mark - set/get 方法

- (NSURLSession*)session {


? ? if(_session==nil) {


? ? ? ? NSURLSessionConfiguration * config = [NSURLSessionConfiguration defaultSessionConfiguration];

? ? ? ? _session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];


? ? }

? ? return _session;


}

/*开始下载的方法**/

- (IBAction)downLoad:(id)sender {


? ? // 1.创立一个下载任务

? ? NSURL *url = [NSURL URLWithString:@"https://pic.songma.com/wenzhang/20200424/25azd1otqlh430.jpg"];

? ? self.task = [self.session downloadTaskWithURL:url];


? ? // 2.开始任务

? ? [self.taskresume];


}

/*暂停的点击方法 **/

- (IBAction)pause:(id)sender {


? ? __weak typeof(self) vc = self;

? ? [self.task cancelByProducingResumeData:^(NSData *resumeData) {

? ? ? ? //? resumeData : 包含了继续下载的开始位置\下载的url

? ? ? ? vc.resumeData= resumeData;

? ? ? ? vc.task=nil;

? ? }];


}

/* 恢复的点击方法 **/

- (IBAction)resume:(id)sender {

? ? // 传入上次暂停下载返回的数据,即可以恢复下载

? ? self.task = [self.session downloadTaskWithResumeData:self.resumeData];


? ? // 开始任务

? ? [self.taskresume];


? ? // 清空

? ? self.resumeData = nil;


}

#pragma mark - NSURLSessionDownloadDelegate

/*下载完成的回调**/

- (void)URLSession:(NSURLSession*)session

? ? ? downloadTask:(NSURLSessionDownloadTask*)downloadTask

didFinishDownloadingToURL:(NSURL*)location {


? ? NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

? ? // response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致

? ? NSString*file = [cachesstringByAppendingPathComponent:downloadTask.response.suggestedFilename];


? ? // 将临时文件剪切或者者复制Caches文件夹

? ? NSFileManager *mgr = [NSFileManager defaultManager];


? ? // AtPath : 剪切前的文件路径

? ? // ToPath : 剪切后的文件路径

? ? [mgrmoveItemAtPath:location.pathtoPath:fileerror:nil];

}

/* 下载进度的回调 **/

- (void)URLSession:(NSURLSession*)session

? ? ? downloadTask:(NSURLSessionDownloadTask*)downloadTask

? ? ? didWriteData:(int64_t)bytesWritten

?totalBytesWritten:(int64_t)totalBytesWritten

totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {


? ? NSLog(@"取得下载进度--%@", [NSThreadcurrentThread]);

? ? // 取得下载进度

? ? self.progressView.progress= (double)totalBytesWritten / totalBytesExpectedToWrite;

}

/* 恢复下载的回调,从哪里开始下载**/

- (void)URLSession:(NSURLSession*)session

? ? ? downloadTask:(NSURLSessionDownloadTask*)downloadTask

?didResumeAtOffset:(int64_t)fileOffset

expectedTotalBytes:(int64_t)expectedTotalBytes {


? ? NSLog(@"fileOffset = %lld",fileOffset);


}

- (void)didReceiveMemoryWarning {

? ? [super didReceiveMemoryWarning];

? ? // Dispose of any resources that can be recreated.

}

  • 全部评论(0)
上一篇:排序算法小结
下一篇:高效遍历Java容器
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
手机二维码手机访问领取大礼包
返回顶部