iOS 文件下载 (AFNetwork 三方框架 含progressView)五
2015-04-13 13:08
211 查看
1.创建request
最后一句
的session,本文使用懒加载
2. session懒加载,并添加代理,监听文件下载情况
3.进度更新和label下载完成百分比更新(注意,一定要在主线程更新,不然无法显示)
4. 下载完成,将下载的数据写入指定缓存路径。
- (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)totalBytesWritten totalBytesExpectedToWrite:(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. 下载完成,将下载的数据写入指定缓存路径。
/** [""] * @brief The 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 *)downloadTask didFinishDownloadingToURL:(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]; }
相关文章推荐
- iOS 文件下载 (AFNetwork 三方框架 文件名中文字符乱码问题解决)四
- iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
- [iOS 多线程 & 网络 - 2.10] - ASI框架下载文件
- [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]
- iOS 之asi 框架 文件 的上传与下载
- ios开发网络篇 - 使用ASI框架进行文件下载
- ios使用AFN框架下载文件显示下载百分比带进度条
- [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]
- struts2中通过Action以InputStream的下载文件以及在iOS以及Android端接收的实现方式
- iOS开发之结合asp.net webservice实现文件上传下载
- 使用Struts 2框架实现文件下载
- 20+精美浏览器框架/边框PSD文件下载
- iOS开发之结合asp.net webservice实现文件上传下载
- iOS开发之结合asp.net webservice实现文件上传下载
- ios (ASIHTTPRequest)获取下载文件大小(size)
- iOS开发视频教程—第四章Foudation框架介绍的源代码和课件下载
- 关于iOS版Citrix Receiver不支持文件上传下载的说明
- iOS开发之结合asp.net webservice实现文件上传下载(转)
- iOS-实现文件上传下载
- JAVA应用XFire框架来实现WebServie的大文件传输功能之一(下载)