iOS 文件下载 (AFNetwork 三方框架 含progressView)五
来源:互联网 发布:单反相机拍摄技巧 知乎 编辑:程序博客网 时间:2024/04/28 01:51
1.创建request
- (void)download2{ NSString *urlString = @"http:192.168.0.179:8080/Myweb/download.do"; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"hello"); NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [[self.session downloadTaskWithRequest:request] resume]; }
最后一句
[[self.session downloadTaskWithRequest:request] resume];
的session,本文使用懒加载
2. session懒加载,并添加代理,监听文件下载情况
// 懒加载- (NSURLSession *)session{ if(_session == nil) { NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; _session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil]; } return _session;}
3.进度更新和label下载完成百分比更新(注意,一定要在主线程更新,不然无法显示)
/* Sent periodically to notify the delegate of download progress. *//**[""] *@brief更新进度条,使用此代理[""] *[""] *@param session session[""] *@param downloadTask 下载任务[""] *@param bytesWritten 当前写入bytes[""] *@param totalBytesWritten 当前总共写入bytes[""] *@param totalBytesExpectedToWrite 期望写入的总bytes[""] *[""] *@return<#return value description#>[""] */- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWrittentotalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{ float progress = (float)totalBytesWritten / totalBytesExpectedToWrite; NSLog(@"%f", progress); //主线程更新UI dispatch_async(dispatch_get_main_queue(), ^(void){ self.progressLabel.text=[NSString stringWithFormat:@"%%%.0f",progress*100]; [self.progressView setProgress:progress animated:YES]; }); }
4. 下载完成,将下载的数据写入指定缓存路径。
/** [""] *@briefThe delegate should copy or move the file at the given location to a new location as it will be removed when the delegate message returns.[""] *[""] *@param session session description[""] *@param downloadTask downloadTask 下载任务[""] *@param location 下载文档位置(临时)[""] *[""] *@return[""] */- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTaskdidFinishDownloadingToURL:(NSURL *)location{ NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; NSString *retStr = [downloadTask.response.suggestedFilename stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"%@ \n",retStr); NSString *path = [cacheDir stringByAppendingPathComponent:retStr]; NSLog(@"%@",path); //NSURL *url2=location; NSLog(@"%@",location); NSData *mydata=[NSData dataWithContentsOfURL:location]; [mydata writeToFile:path atomically:YES];}
0 0
- iOS 文件下载 (AFNetwork 三方框架 含progressView)五
- iOS 文件下载 (AFNetwork 三方框架 文件名中文字符乱码问题解决)四
- iOS 绘制下载进度条progressView
- ios-三方框架
- iOS开发篇(五)SSZipArchive三方框架的使用与介绍
- iOS使用AFNetwork下载总结
- iOS 三方框架集
- iOS 第三方框架下载网址
- iOS AFNetWork
- AFNetwork 3.0 源码解读(五)AFSecurityPolicy
- Android文件下载含服务器端(客户端 UI界面异步请求部分)三
- AFNetwork上传文件,下载文件,监控网络状态
- AFNetwork上传文件,下载文件,监控网络状态
- AFNetwork 3.0 源码解读(三)AFURLRequestSerialization
- java 文件下载(含POI)
- Struts2文件下载(含多文件下载)
- ios-第三方框架下载进度回调知识点
- IOS progressview的简单使用
- 了解JavaScript中的prototype (转载)
- LDA文本建模(4)——算法细节、伪代码、实现
- 垃圾回收的优点和原理
- Unity3D深入浅出 - 导航网格自动寻路(Navigation Mesh) - Tonge
- IOS如何在当前工程中导入另一个工程文件
- iOS 文件下载 (AFNetwork 三方框架 含progressView)五
- 如何写出高效的单片机C语言程序代码
- Spring与Struts2整合
- jquery 水平方向和垂直方向滑动隐藏和显示 渐渐 隐藏和显示
- struts2中Could not find action or result错误
- 递归算法详细分析-> C
- Windows下配置nginx+FastCgi + Spawn-fcgi
- 链表基础学习(一)
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么 办法主动通知虚拟机进行垃圾回收?