首页 > 代码库 > [iOS 多线程 & 网络 - 2.10] - ASI框架下载文件
[iOS 多线程 & 网络 - 2.10] - ASI框架下载文件
A.ASI框架中的下载
1.实现步骤
在实际的开发中如果要使用asi框架来下载服务器上的文件,只需要执行下面简单的几个步骤即可。
(1)创建请求对象;
(2)设置下载文件保存的路径;
(3)发送下载文件的网络请求(异步)。
按照上面的几个步骤执行,程序会自动开启异步线程,一点一点的把数据写入到指定的文件路径,而且不论是下载多大的文件都不会占用大量的内存空间。
(2)设置下载文件保存的路径;
(3)发送下载文件的网络请求(异步)。
按照上面的几个步骤执行,程序会自动开启异步线程,一点一点的把数据写入到指定的文件路径,而且不论是下载多大的文件都不会占用大量的内存空间。
ASI框架是基于底层的cfnoteworking的,性能很好。当然也可以设置block,或者是监听下载的进度。
自动会使用“边下边写”
使用进度代理方法获取下载进度 setProgress
1 // 2 // ViewController.m 3 // ASIDownloadDemo 4 // 5 // Created by hellovoidworld on 15/1/28. 6 // Copyright (c) 2015年 hellovoidworld. All rights reserved. 7 // 8 9 #import "ViewController.h"10 #import "ASIHTTPRequest.h"11 12 @interface ViewController ()13 14 @property(nonatomic, strong) ASIHTTPRequest *request;15 16 @property (weak, nonatomic) IBOutlet UIProgressView *progressView;17 18 - (IBAction)startDownloading;19 20 @end21 22 @implementation ViewController23 24 - (void)viewDidLoad {25 [super viewDidLoad];26 // Do any additional setup after loading the view, typically from a nib.27 }28 29 - (void)dealloc {30 [self.request clearDelegatesAndCancel];31 self.request = nil;32 }33 34 - (IBAction)startDownloading {35 // 1.创建请求36 NSURL *url = [NSURL URLWithString:@"http://192.168.0.21:8080/MyTestServer/images/images.zip"];37 self.request = [ASIHTTPRequest requestWithURL:url];38 39 // 2.设置文件存放路径40 NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];41 NSString *filePath = [cachePath stringByAppendingPathComponent:@"images.zip"];42 self.request.downloadDestinationPath = filePath;43 44 // 3.设置下载代理45 // 由于刚好下载代理方法有个setProgress,可以直接使用progressView的setProgress,直接控制进度条46 self.request.downloadProgressDelegate = self.progressView;47 48 // 4.支持断点下载49 self.request.allowResumeForFileDownloads = YES;50 51 self.request.completionBlock = ^{52 NSLog(@"下载完成!");53 };54 55 // 5.发送请求56 [self.request startAsynchronous];57 }58 59 #pragma mark - ASIProgressDelegate60 /** 下载进度代理方法 */61 //- (void)setProgress:(float)newProgress {62 // self.progressView.progress = newProgress;63 //}64 65 @end
2.断点下载
ASI的文件下载还有一个属性可以设置是否支持断点下载。
设置支持断点下载的代码如下:
request.allowResumeForFileDownloads=YES;
这样的话,比如一个文件已经下载了百分之30到程序的沙盒中,这个时候取消了下载。当下一次点击下载文件的时候,会接着下载剩余的百分之70并一点一点的写入到沙盒中。
提示:取消下载的代码为:
request.allowResumeForFileDownloads=YES;
这样的话,比如一个文件已经下载了百分之30到程序的沙盒中,这个时候取消了下载。当下一次点击下载文件的时候,会接着下载剩余的百分之70并一点一点的写入到沙盒中。
提示:取消下载的代码为:
[request clearDelegatesAndCancel];
[iOS 多线程 & 网络 - 2.10] - ASI框架下载文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。