IOS断点续传-创新互联

创建一个ASINetworkQueue全局队列,队列里可以添加请求

十载的克州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整克州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“克州网站设计”,“克州网站推广”以来,每个客户项目都认真落实执行。

- (void)viewDidLoad

{

  queue = [[ASINetworkQueue alloc] init];

  //设置支持较高精度的进度追踪

  [queue setShowAccurateProgress:YES];

  //启动

  [queue go];

}

紧接着创建我们的下载请求:

- (IBAction)startDownload

{

//Documents路径

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

//下载路径

 downloadPath = [[path stringByAppendingPathComponent:@"A.txt"] retain];

//要支持断点续传,缓存路径是不能少的。

NSString *tempPath = [path stringByAppendingPathComponent:@"A.temp"];

//下载链接

NSURL *url = [NSURL URLWithString:@""];

//创建请求

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

//设置代理,别忘了在头文件里添加ASIHTTPRequestDelegate协议

request.delegate = self;

//设置下载路径

 [request setDownloadDestinationPath:downloadPath];

//设置缓存路径

[request setTemporaryFileDownloadPath:tempPath];

//设置支持断点续传

[request setAllowResumeForFileDownloads:YES];

request.downloadProgressDelegate = self;

[queue addOperation:request];

}

//请求开始

- (void)requestStarted:(ASIHTTPRequest *)request;

//请求收到响应的头部,主要包括文件大小信息,下面会用到

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders;

//请求将被重定向

- (void)request:(ASIHTTPRequest *)request willRedirectToURL:(NSURL *)newURL;

//请求完成

- (void)requestFinished:(ASIHTTPRequest *)request;

//请求失败

- (void)requestFailed:(ASIHTTPRequest *)request;

//请求已被重定向

- (void)requestRedirected:(ASIHTTPRequest *)request;

下面是我们对头部信息的处理

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders

{

  NSLog(@”%@”,responseHeaders);

  if (fileLength == 0) {

    fileLength = request.contentLength/1024.0/1024.0;

    totalPro.text = [NSString stringWithFormat:@"%.2fM",fileLength];

  }

}

我们可以从中看到文件大小等一些请求信息,这时request自己也知道了文件大小,所以我们直接使用request的contentLength属性

这是处理进度的方法(request会自动调用该方法):

- (void)setProgress:(float)newProgress

{

  progressView.progress = newProgress;

  currentPro.text = [NSString stringWithFormat:@"%.2fM",fileLength*newProgress];

}

下面是暂停方法用来测试断点

- (IBAction)pauseDownload

{

  //operations方法返回队列里的所有请求,但我们只有一个请求

  ASIHTTPRequest *request = [[queue operations] objectAtIndex:0];

  //取消请求

  [request clearDelegatesAndCancel];

}

队列里只有一个请求。

这里说是暂停,其实request已经完全被取消了!下面说说断点续传

因为开启了断点续传,并且设置了缓存路径,所以request取消时就会在缓存文件里打断点,当我们在次执行上面的startDownload方法时,缓存路径还是之前的缓存路径,request会自动从缓存文件中的断点后开始下载,头部中的文件大小值也是从断点之后开始算的。ASIHTTPRequest已经为你打点好了一切。

继续,当请求完成时,也就是我们的文件已经下载好了的时候,下载好的文件会在我们之前指定的下载路径下生成,同时缓存文件会被删除。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:IOS断点续传-创新互联
URL分享:http://scyanting.com/article/dspcgg.html