美文网首页
断点续传

断点续传

作者: 路灯下的黑猫H | 来源:发表于2017-03-16 14:34 被阅读0次

//

//ViewController.m

//CocoTest_1

//

//Created by S u p e r m a n on 2017/3/14.

//Copyright © 2017年张浩. All rights reserved.

//

#import"ViewController.h"

@interfaceViewController()

@property(weak,nonatomic)IBOutletUIProgressView*progressView;

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

@property(nonatomic,strong)NSURLSessionDownloadTask*task;

@property(nonatomic,strong)NSData*resumeData;

@property(nonatomic,strong)NSURLSession*session;

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

#pragma mark - set/get方法

- (NSURLSession*)session {

if(_session==nil) {

NSURLSessionConfiguration* config = [NSURLSessionConfigurationdefaultSessionConfiguration];

_session= [NSURLSessionsessionWithConfiguration:configdelegate:selfdelegateQueue:[NSOperationQueuemainQueue]];

}

return_session;

}

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

- (IBAction)downLoad:(id)sender {

// 1.创建一个下载任务

NSURL*url = [NSURLURLWithString:@"http://weixue.steptowin.com:8000/data/img/20160411/veuyytthy4b2_320_200.jpg"];

self.task= [self.sessiondownloadTaskWithURL:url];

// 2.开始任务

[self.taskresume];

}

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

- (IBAction)pause:(id)sender {

__weaktypeof(self) vc =self;

[self.taskcancelByProducingResumeData:^(NSData*resumeData) {

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

vc.resumeData= resumeData;

vc.task=nil;

}];

}

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

- (IBAction)resume:(id)sender {

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

self.task= [self.sessiondownloadTaskWithResumeData: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 = [NSFileManagerdefaultManager];

// 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 {

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

相关文章

  • Android-单线程断点续传

    断点续传的原理 看上一篇Android-断点续传 下面的例子是下载的断点续传,断点续传很简单就两点:1.网络请求的...

  • ios 后台下载,断点续传总结

    断点续传 demo 断点续传的原理是在HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头的Ran...

  • Okhttp多线程断点续传

    目录 1、断点续传相关定义2、多线程下载实现方案 1、断点续传相关定义 1.1、断点续传: 记录上次下载的位置,下...

  • NSURLSession实现断点下载

    断点续传概述 断点续传就是从文件上次中断的地方开始重新下载或上传数据,而不是从文件开头。(本文的断点续传仅涉及下载...

  • 多线程断点

    Android多线程断点续传下载 原理 其实断点续传的原理很简单,从字面上理解,所谓断点续传就是从停止的地方重新下...

  • IOS 断点续传原理浅析(第一篇)

    断点续传概述: 断点续传就是从文件上次中断的地方开始重新下载或上传数据,当下载大文件的时候,如果没有实现断点续传功...

  • iOS-16 断点续传 下载

    断点续传概述: 断点续传就是从文件上次中断的地方开始重新下载或上传数据,当下载大文件的时候,如果没有实现断点续传功...

  • android 中断点续传

    android 中断点续传 单线程断点续传 所谓的断点续传就是在下载一个文件时,文件没有完全下载,中途暂停,那么再...

  • Android断点下载小结

    前言 断点续传是一个很传统的话题;现在但凡包含下载功能的软件,大部分都会有断点续传的功能;因此对于断点续传的实现,...

  • Android-多线程断点续传

    简介 多线程断点续传便是在单线程的断点续传上延伸的。多线程断点续传是把整个文件 分割成几个部分,每个部分由一条线程...

网友评论

      本文标题:断点续传

      本文链接:https://www.haomeiwen.com/subject/rxhjnttx.html