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实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传. 在实际开发中,输入输出流用的比较少,但 ...
随机推荐
- BootstrapTable与KnockoutJS相结合实现增删改查功能
http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...
- BZOJ 3261: 最大异或和位置-贪心+可持久化01Trie树
3261: 最大异或和 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 3519 Solved: 1493[Submit][Status][Discu ...
- Java浮点类型的格式化
概述 基于Java,介绍将浮点类型小数进行格式化的方案. 正文 在Java中,用于格式化小数的类是java.text.DecimalFormat,比如你可以这样使用: double data = 33 ...
- 从Windows复制文件到Linux显示乱码问题
(1).文件名乱码 这并不是所有人都会碰到的问题,一般常见于使用putty的用户.使用convmv命令可以解决这个问题. 我写详细一点还原真实场景,首先我来上传一个测试文件“a此文件在windows下 ...
- cobol COMP-3最后1位
"C" hex is positive, "D" hex is negative, and "F" hex is unsigned.
- Linux基础系列-Day5
网络管理 ifconfig网络管理工具 ifconfig依赖于命令中使用一些选项属性,不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置,但是通过ifconfig修改的通常为临时配置,即系统 ...
- bzoj 3140: [Hnoi2013]消毒
3140: [Hnoi2013]消毒 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数 ...
- [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6 ...
- [转]oracle 数据库、表空间、实例、服务之间的关系
1.每个DATABASE--可包含多个INSTANCE--每个INSTANCE可包含多个TABLESPACE和USER等(授予USER读写TABLESPACE的权限)--每个TABLESPACE可包含 ...
- spring boot 添加自定义属性
1.添加jar compile('org.springframework.boot:spring-boot-configuration-processor:1.2.0.RELEASE') 2.在app ...