一:本示例代码包括:

  • 文件下载,写入指定目录
  • 下载进度,回调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 下载文件断点续传操作的更多相关文章

  1. 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 ...

  2. java实现从服务端下载文件

    这边用一个简单的servlet实现java从服务端下载文件的操作 写一个servlet: <servlet> <servlet-name>DownloadServlet< ...

  3. js -- fileData 实现文件断点续传

    前端实现文件的断点续传 一.一些知识准备 断点续传,既然有断,那就应该有文件分割的过程,一段一段的传. 以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割,我们可以可以使用sl ...

  4. ios开发网络学习五:MiMEType ,多线程下载文件思路,文件的压缩和解压缩

    一:MiMEType:一般可以再百度上搜索到相应文件的MiMEType,或是利用c语言的api去获取文件的MiMEType : //对该文件发送一个异步请求,拿到文件的MIMEType - (void ...

  5. 【FTP】FTP文件上传下载-支持断点续传

    Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...

  6. 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件

    反射: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性 Java反射机制主要提供下面几种用途: 1•在运行时判断 ...

  7. java 多线程下载文件并实时计算下载百分比(断点续传)

    多线程下载文件 多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来 ...

  8. (转)FTP操作类,从FTP下载文件

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...

  9. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄

    前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传.    在实际开发中,输入输出流用的比较少,但 ...

随机推荐

  1. 剑指offer-链表中倒数第 K 个结点

    输入一个链表,输出该链表中倒数第k个结点. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { ...

  2. Oracle实例,具体运用

    Oracle关键字的使用 使用insert 添加数据: INSERT  INTO  表名  VALUES  (加入对应的数); COMMIT; INSERT INTO p_emp VALUES('TO ...

  3. 《深入浅出Nodejs》笔记——模块机制(2)

    前言 书上还有很大一部分讲了C/C++模块的编译过程.核心模块编写和C/C++扩展模块的内容,不过我对C++一窍不通因此没有仔细看,如果以后需要再自习看吧. 包与NPM 第三方模块中,模块和模块之间是 ...

  4. 【UOJ #179】线性规划 单纯形模板

    http://uoj.ac/problem/179 终于写出来了单纯性算法的板子,抄的网上大爷的qwq 辅助线性规划找非基变量时要加个随机化才能A,我也不知道为什么,卡精度吗? 2017-3-6UPD ...

  5. JDBC 编程

    DAO设计 没有使用DAO存在的问题:多个地方都要都同时做CRUD操作时,重复的代码就会很多. DAO:Data Access Object(数据存取对象). 位于业务逻辑和持久化数据之间,实现对持久 ...

  6. html基础知识介绍

    1 前端概要 前端三大利器 1.html  赤裸裸的人 2.css   穿上华丽的衣服 3.js    让人生动起来 2 HTML本质及在web程序中的作用 2.1 介绍 HTML 1.一套规则,浏览 ...

  7. OpenVPN设置客户端固定IP

    在使用openvpn的过程中,多台客户端连接上同一台openvpn服务器之后,客户端的的IP地扯经常变动,导致客户端之间无法正常通讯,openvpn的版本变动也导致了固定IP地扯的配置不同,用以下方法 ...

  8. Apache静态编译与动态编译详解

    Apache拥有4层结构,从核心到外层的module.而外层的module可以用通过静态和动态两种方式与Apache共同工作.这也就引入下文的“动态”和“静态”两种编译安装方式: 静态编译: 编译的时 ...

  9. appium+python自动化46-安装app三种方式

    前言 adb安装 1.在app自动化之前,首先手机上有要被测试的app,如何把电脑本地上的app安装到手机上呢?可以在运行自动化代码前,在cmd输入adb指令,把电脑app安装到手机上 adb ins ...

  10. 1:MUI选择器组件抛出“n.getSelectedItem is not a function”异常的解决办法 2:mui三级联动 3:移动端关闭虚拟键盘

    1:如下图 问题:引用了mui的地址选择的三级联动的应用在h5上的组件 百度发现别人思路对 Array 原型链方法扩充时,会抛出这个异常. 修改方法: mui.poppicker.js 第 112 行 ...