IOS成长之路-ASIHTTPRequest 断点续传

1.导入ASIHTTPRequest第三方类库

技术分享

下载地址:ASIHttpRequest类库         完整代码下载:下载

 

2.在 .h 文件中

 

  1. #import <UIKit/UIKit.h>  
  2. #import "ASIHTTPRequest.h"  
  3. #import "ASINetworkQueue.h"  
  4. @interface DownLoadViewController : UIViewController<ASIHTTPRequestDelegate>  
  5. {  
  6.     UIProgressView *_progressView;  
  7. }  
  8.   
  9. @property(nonatomic, retain) UIProgressView *progressView;  
  10. @property(nonatomic, retain) ASINetworkQueue *asiQueue;  
  11. @property(nonatomic, retain) ASIHTTPRequest *asiHttpRequest;  
  12. @end  


3.在 .m 文件中 实现这一过程

 

首先开启队列:

 

  1. _asiQueue=[[ASINetworkQueue alloc]init];//开启队列  
  2.     [_asiQueue reset];//nil  
  3.     _asiQueue.showAccurateProgress=YES;//进度  
  4.     [_asiQueue go];  


实现下载:

 

 

  1. NSURL *url = [NSURL URLWithString:@"请求地址"];  
  2.      
  3.    _asiHttpRequest=[ASIHTTPRequest requestWithURL:url];  
  4.    _asiHttpRequest.delegate=self;  
  5.    _asiHttpRequest.downloadProgressDelegate=self;//下载进度的代理,用于断点续传  
  6.     
  7.      
  8.     path = NSHomeDirectory();//该方法得到的是应用程序目录的路径  
  9.      
  10.    //目的路径,设置一个目的路径用来存储下载下来的文件  
  11.    NSString *savePath = [path stringByAppendingPathComponent:@"qgw.mp3"];  
  12.    /* 
  13.        临时路径: 
  14.            1.设置一个临时路径用来存储下载过程中的文件 
  15.            2.当下载完后会把这个文件拷贝到目的路径中,并删除临时路径中的文件 
  16.            3.断点续传:当设置断点续传的属性为YES后,每次执行都会到临时路径中寻找要下载的文件是否存在,下载的进度等等。。。然后就会在此基础上继续下载,从而实现续传的效果 
  17.     设置临时路径在这个过程中是相当重要的。。。 
  18.     */  
  19.    NSString *temp = [path stringByAppendingPathComponent:@"temp"];  
  20.      
  21.    /* 
  22.        又在临时路径中添加了一个mp3格式的文件,这就相当于设置了一个假的要下载的文件,其实是不存在的,可以这么理解:这里提供了一个容器,下载的内容填充到了这个容器中。 
  23.        这个容器是必须要设置的,要不然它会不知道要下载到什么里面。。。 
  24.      
  25.        会有人说:问什么不和上面的临时路径拚在一起,不是一样么:NSString *temp = [path stringByAppendingPathComponent:@"temp/qgw.mp3"]; 
  26.        这是不行的,因为你的临时路径必须要保证是正确的、是拥有的,所以在下面你要用NSFileManager来判断是否存在这么一个路径,如果不存在就去创建, 
  27.        当你创建的时候会把qgw.mp3当作是一个文件夹来创建的,所以每次断点续传的时候都会进入到qgw.mp3这个文件夹中寻找,当然是找不到的(因为qwg.mp3就是) 
  28.        so,要分开来写。。。 
  29.      
  30.     */  
  31.    NSString *tempPath = [temp stringByAppendingPathComponent:@"qgw.mp3"];  
  32.      
  33.    //创建文件管理器  
  34.    NSFileManager *fileManager = [NSFileManager defaultManager];  
  35.    //判断temp文件夹是否存在  
  36.    BOOL fileExists = [fileManager fileExistsAtPath:temp];  
  37.    if (!fileExists)  
  38.    {//如果不存在则创建,因为下载时,不会自动创建文件夹  
  39.          
  40.        [fileManager createDirectoryAtPath:temp  
  41.               withIntermediateDirectories:YES  
  42.                                attributes:nil  
  43.                                     error:nil];  
  44.    }  
  45.      
  46.    [ _asiHttpRequest setDownloadDestinationPath:savePath ];//下载路径  
  47.    [ _asiHttpRequest setTemporaryFileDownloadPath:tempPath ];//临时路径,一定要设置临时路径。。  
  48.      
  49.    _asiHttpRequest.allowResumeForFileDownloads = YES;//打开断点,是否要断点续传  
  50.      
  51.    //进度条  
  52.    _progressView.alpha = 1.0f;  
  53.    _progressView.progress=0;//赋值为0  
  54.      
  55.    [_asiQueue addOperation:_asiHttpRequest];//加入队列  


得到下载的进度:

 

 

  1. //代理方法,得到下载进度  
  2. - (void)setProgress:(float)newProgress{  
  3.     [_progressView setProgress:newProgress];//赋给进度条  
  4. }  


停止下载:

 

 

  1. [_asiHttpRequest clearDelegatesAndCancel];//停掉  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。