断点续传
来源:互联网 发布:spss mac版 pc6 编辑:程序博客网 时间:2024/06/03 21:08
//// ViewController.m// 断点续传//// Created by apple on 16/5/31.// Copyright © 2016年 李重阳. All rights reserved.//#import "ViewController.h"@interface ViewController ()<NSURLSessionDelegate>@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]; // Do any additional setup after loading the view, typically from a nib.}#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:@"http://weixue.steptowin.com:8000/data/img/20160411/veuyytthy4b2_320_200.jpg"]; self.task = [self.session downloadTaskWithURL:url]; // 2.开始任务 [self.task resume];}/*暂停的点击方法 **/- (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.task resume]; // 清空 self.resumeData = nil;}#pragma mark - NSURLSessionDownloadDelegate/*下载完成的回调**/- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTaskdidFinishDownloadingToURL:(NSURL *)location { NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; // response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致 NSString *file = [caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename]; // 将临时文件剪切或者复制Caches文件夹 NSFileManager *mgr = [NSFileManager defaultManager]; // AtPath : 剪切前的文件路径 // ToPath : 剪切后的文件路径 [mgr moveItemAtPath:location.path toPath:file error:nil];}/* 下载进度的回调 **/- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWrittentotalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { NSLog(@"获得下载进度--%@", [NSThread currentThread]); // 获得下载进度 self.progressView.progress = (double)totalBytesWritten / totalBytesExpectedToWrite;}/* 恢复下载的回调,从哪里开始下载**/- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffsetexpectedTotalBytes:(int64_t)expectedTotalBytes { NSLog(@"fileOffset = %lld",fileOffset);}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
0 0
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 面试题
- 如何让多个显示器显示不同屏幕
- XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
- Java基础回顾 : 对象序列化和反序列化
- 面试
- 断点续传
- HttpServletRequest
- CXF Webservice nonSpring
- github 上Android相关应用的链接学习
- python 2.7.11 + windows 10 连接 mysql学习记录
- 触发checkbox的click事件时遇到的问题
- 91---Criteria的内链接,分页,查询唯一对象,条件查询,分组统计,投影查询,DetachedCriteria
- hibernate jdbc
- iOS关闭手势返回功能