iOS项目开发—文件下载功能的实现
2014-12-23 16:41
716 查看
一、简单说明
1.思路
View Code
代码:
控制器想监听下载器的下载进度,控制器想监听下载器的下载完毕,控制器想监听下载器的下载失败等都可以使用block的方式进行。
打印查看:
2.代码说明
(1)创建文件存储路径(写入到沙盒)
NSString *caches=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath=[caches stringByAppendingPathComponent:@"video.zip"];
(2)创建一个空的文件夹( NSFileManager类的使用)
NSFileManager *mgr=[NSFileManager defaultManager];
(3)创建写数据的文件句柄
self.writeHandle=[NSFileHandle fileHandleForWritingAtPath:filePath];
(4)把data写入到创建的空文件中,但是不能使用writeTofile(会覆盖)
移动句柄到文件的尾部 [self.writeHandle seekToEndOfFile];
(5)下载完毕的时候,关闭连接
[self.writeHandle closeFile];
3、Range简单说明
通过设置请求头Range可以指定每次从网路下载数据包的大小
Range示例
bytes=0-499 从0到499的头500个字节
bytes=500-999 从500到999的第二个500字节
bytes=500- 从500字节以后的所有字节
bytes=-500 最后500个字节
bytes=500-599,800-899 同时指定几个范围
Range小结
- 用于分隔
前面的数字表示起始字节数
后面的数组表示截止字节数,没有表示到末尾
, 用于分组,可以一次指定多个Range,不过很少用
注意:关键代码
从self.currentLength字节部分重新开始读取
NSString *value=[NSString stringWithFormat:@"bytes=%lld-",self.currentLength];
[request setValue:value forHTTPHeaderField:@"Range"];
1.思路
// // TXViewController.m // 文件下载 // // Created by 鑫 on 14/12/23. // Copyright (c) 2014年 梁镋鑫. All rights reserved. // #import "TXViewController.h" #import "TXFileDownloader.h" @interface TXViewController () @property(nonatomic,strong)TXFileDownloader *fileDownloader; @property (weak, nonatomic) IBOutlet UIButton *btn; @property (weak, nonatomic) IBOutlet UIProgressView *progress; @end @implementation TXViewController - (void)viewDidLoad { [super viewDidLoad]; } #pragma mark-懒加载 -(TXFileDownloader *)fileDownloader { if (_fileDownloader==nil) { _fileDownloader=[[TXFileDownloader alloc]init]; //设置文件下载路径 _fileDownloader.url=@"http://192.168.1.53:8080/MJServer/resources/video.zip"; //设置文件保存路径 NSString *caches=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *filePath=[caches stringByAppendingPathComponent:@"video.zip"]; _fileDownloader.destPath=filePath; //获取10的真实类型,把它作为a的类型 // typeof(10) a = 20; // int a = 20; __weak typeof(self) vc=self; _fileDownloader.progressHandler=^(double progress) { vc.progress.progress=progress; NSLog(@"%f",progress); }; _fileDownloader.completionHandler=^{ NSLog(@"下载完成"); [vc.btn setTitle:@"下载已经完成" forState:UIControlStateNormal]; }; _fileDownloader.failureHandler=^(NSError *error){ NSLog(@"下载错误!%@",error); }; } return _fileDownloader; } //点击下载按钮,处理操作 - (IBAction)star { if (self.fileDownloader.isDownloading) {//如果正在下载,那么调用方法暂停 [self.fileDownloader pause]; [self.btn setTitle:@"暂停" forState:UIControlStateNormal]; }else//如果没有正在下载,那么调用下载方法 { [self.fileDownloader start]; [self.btn setTitle:@"下载" forState:UIControlStateNormal]; } } @end
View Code
代码:
控制器想监听下载器的下载进度,控制器想监听下载器的下载完毕,控制器想监听下载器的下载失败等都可以使用block的方式进行。
打印查看:
2.代码说明
(1)创建文件存储路径(写入到沙盒)
NSString *caches=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath=[caches stringByAppendingPathComponent:@"video.zip"];
(2)创建一个空的文件夹( NSFileManager类的使用)
NSFileManager *mgr=[NSFileManager defaultManager];
(3)创建写数据的文件句柄
self.writeHandle=[NSFileHandle fileHandleForWritingAtPath:filePath];
(4)把data写入到创建的空文件中,但是不能使用writeTofile(会覆盖)
移动句柄到文件的尾部 [self.writeHandle seekToEndOfFile];
(5)下载完毕的时候,关闭连接
[self.writeHandle closeFile];
3、Range简单说明
通过设置请求头Range可以指定每次从网路下载数据包的大小
Range示例
bytes=0-499 从0到499的头500个字节
bytes=500-999 从500到999的第二个500字节
bytes=500- 从500字节以后的所有字节
bytes=-500 最后500个字节
bytes=500-599,800-899 同时指定几个范围
Range小结
- 用于分隔
前面的数字表示起始字节数
后面的数组表示截止字节数,没有表示到末尾
, 用于分组,可以一次指定多个Range,不过很少用
注意:关键代码
从self.currentLength字节部分重新开始读取
NSString *value=[NSString stringWithFormat:@"bytes=%lld-",self.currentLength];
[request setValue:value forHTTPHeaderField:@"Range"];
相关文章推荐
- iOS开发中文件的上传和下载功能的基本实现-备用
- iOS开发中文件的上传和下载功能的基本实现
- ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)
- iOS开发中文件的上传和下载功能的基本实现
- iOS开发中文件的上传和下载功能的基本实现
- iOS开发之结合asp.net webservice实现文件上传下载(转)
- Android开发记录七之文件下载的功能实现
- iOS项目开发小技巧 (三) --UITableView实现Cell左划删除等自定义功能
- iOS开发之结合asp.net webservice实现文件上传下载
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(二):jspSmartUpload上传下载全攻略(ZZ)
- iOS开发项目实战——Swift实现ScrollView滚动条功能
- iOS 开发与安卓平台共通 实现录音文件的录制,上传,下载,播放
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(一):JspSmart之upload组件源码及使用
- iOS开发中会经常用到文件上传下载的功能
- iOS开发之结合asp.net webservice实现文件上传下载
- iOS开发之实现文件上传下载
- iOS开发之结合asp.net webservice实现文件上传下载
- iOS开发之结合asp.net webservice实现文件上传下载
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)