AFNetworking 下载文件断点续传操作
一:本示例代码包括:
- 文件下载,写入指定目录
- 下载进度,回调Progress;
- 断点续传,下载暂停,继续操作;
二:本项目 适用于 AFNetworking 1.x 版本
- #pragma mark 断点续传下载;
- //断点下载续传--需要服务器端的支持,本次测试为下载百度音乐,此接口,会在第二次暂停,继续下载时,出404错误;
- //进度
- UIProgressView *downProgressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
- downProgressView.center = CGPointMake(self.view.center.x, );
- downProgressView.progress = ;
- downProgressView.progressTintColor = [UIColor blueColor];
- downProgressView.trackTintColor = [UIColor grayColor];
- [self.view addSubview:downProgressView];
- //开始
- UIButton *start = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- start.frame = CGRectMake(, , , );
- [start setTitle:@"开始" forState:UIControlStateNormal];
- [start addTarget:self action:@selector(startDownloadOp) forControlEvents:UIControlEventTouchUpInside];
- //暂停
- UIButton *pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- pause.frame = CGRectMake(, , , );
- [pause setTitle:@"暂停" forState:UIControlStateNormal];
- [pause addTarget:self action:@selector(pausetDownloadOp) forControlEvents:UIControlEventTouchUpInside];
- //继续
- UIButton *resume = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- resume.frame = CGRectMake(, , , );
- [resume setTitle:@"继续" forState:UIControlStateNormal];
- [resume addTarget:self action:@selector(resumeDownloadOp) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:start];
- [self.view addSubview:pause];
- [self.view addSubview:resume];
- //文件名
- NSString *fileName = [NSString stringWithFormat:@"%@愿得一人听.mp3",NSTemporaryDirectory()];
- NSLog(@"%@",fileName);
- //下载
- NSURLRequest *downloadRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:MusicOne]];
- self.downloadMusicOP = [[AFHTTPRequestOperation alloc]initWithRequest:downloadRequest];
- _downloadMusicOP.outputStream = [NSOutputStream outputStreamToFileAtPath:fileName append:NO];
- [_downloadMusicOP setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
- CGFloat progress = ((float)totalBytesRead) / totalBytesExpectedToRead;
- [downProgressView setProgress:progress animated:YES];
- start.enabled = NO;
- [start setTitle:@"下载中" forState:UIControlStateNormal];
- }];
- [_downloadMusicOP setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
- start.enabled = NO;
- [start setTitle:@"完成" forState:UIControlStateNormal];
- NSLog(@"download finish");
- NSLog(@"%@",[[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil]);
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"error %@",error);
- }];
- }
- #pragma mark AFNetworking 下载之断点续传;
- - (void)startDownloadOp
- {
- [_downloadMusicOP start];
- }
- - (void)pausetDownloadOp
- {
- [_downloadMusicOP pause];
- }
- - (void)resumeDownloadOp
- {
- [_downloadMusicOP resume];
- }
项目代码:http://git.oschina.net/cocoajin/AFNetworkingTest
AFNetworking 下载文件断点续传操作的更多相关文章
- ftp上传文件、删除文件、下载文件的操作
FavFTPUtil.Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...
- java实现从服务端下载文件
这边用一个简单的servlet实现java从服务端下载文件的操作 写一个servlet: <servlet> <servlet-name>DownloadServlet< ...
- js -- fileData 实现文件断点续传
前端实现文件的断点续传 一.一些知识准备 断点续传,既然有断,那就应该有文件分割的过程,一段一段的传. 以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割,我们可以可以使用sl ...
- ios开发网络学习五:MiMEType ,多线程下载文件思路,文件的压缩和解压缩
一:MiMEType:一般可以再百度上搜索到相应文件的MiMEType,或是利用c语言的api去获取文件的MiMEType : //对该文件发送一个异步请求,拿到文件的MIMEType - (void ...
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
- 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件
反射: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性 Java反射机制主要提供下面几种用途: 1•在运行时判断 ...
- java 多线程下载文件并实时计算下载百分比(断点续传)
多线程下载文件 多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来 ...
- (转)FTP操作类,从FTP下载文件
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传. 在实际开发中,输入输出流用的比较少,但 ...
随机推荐
- python正则的中文处理(转)
匹配中文时,正则表达式规则和目标字串的编码格式必须相同 print sys.getdefaultencoding() text =u"#who#helloworld#a中文x#" ...
- JQuery动态添加多个tab页标签
jQuery是一个兼容多浏览器的js库,核心理念是write less,do more(写的更少,做的更多),jQuery使用户能更方便地处理HTML documents.events.实现动画效果, ...
- Thinkphp命名规范
1.类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php: 2.类 ...
- 17-7-20-electron中主进程和渲染进程区别与通信
老规矩,先吐槽,再记录. 今天被上司教育了将近一个小时.因为之前自动更新的模块,我认为已经完成了,但是还有一些细节没有完善好,就一直一直的被教育~ 事情全部做完,提交以后关闭issue! electr ...
- 循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)
views.py from django.shortcuts import render,HttpResponse from django import forms import json impor ...
- Java HashSet的元素内容变化导致的问题
概述 HashSet元素引用的对象的内容发生变化,会导致"元素不属于集合"的问题.事实上这个元素还在集合里,但是调用contains方法进行判断,得到的结果却是false. 正文 ...
- sql 预编译 in
sql : "select * from json where id in (:paramName)"; 在使用Hibernate时,sql in的预编译语句为query.setP ...
- [bzoj3244][noi2013]树的计数 题解
UPD: 那位神牛的题解更新了,在这里. ------------------------------------------------------------------------------- ...
- [NOI2015]小园丁与老司机(DP+上下界最小流)
由于每行点的个数不超过1000,所以行内DP可以使用$O(n^2)$算法. 先找到每个点所能直接到达的所有点(x,y,x+y或x-y相同),用排序实现. 第一问:以行为阶段,对于每行,暴力枚举最有路径 ...
- [xsy2289]B
题意:给一棵树,一次操作定义为删掉一条树边再加一条边,并且满足加完边后这还是一棵树,问在进行不超过$k$次操作后能构造出多少种不同的树 首先...矩阵树定理在边有边权的时候同样适用,这时可以把它看成重 ...