一:本示例代码包括:

  • 文件下载,写入指定目录
  • 下载进度,回调Progress;
  • 断点续传,下载暂停,继续操作;

二:本项目 适用于 AFNetworking 1.x 版本

  1. #pragma mark 断点续传下载;
  2.  
  3. //断点下载续传--需要服务器端的支持,本次测试为下载百度音乐,此接口,会在第二次暂停,继续下载时,出404错误;
  4.  
  5. //进度
  6. UIProgressView *downProgressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
  7. downProgressView.center = CGPointMake(self.view.center.x, );
  8. downProgressView.progress = ;
  9. downProgressView.progressTintColor = [UIColor blueColor];
  10. downProgressView.trackTintColor = [UIColor grayColor];
  11. [self.view addSubview:downProgressView];
  12.  
  13. //开始
  14. UIButton *start = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  15. start.frame = CGRectMake(, , , );
  16. [start setTitle:@"开始" forState:UIControlStateNormal];
  17. [start addTarget:self action:@selector(startDownloadOp) forControlEvents:UIControlEventTouchUpInside];
  18.  
  19. //暂停
  20. UIButton *pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  21. pause.frame = CGRectMake(, , , );
  22. [pause setTitle:@"暂停" forState:UIControlStateNormal];
  23. [pause addTarget:self action:@selector(pausetDownloadOp) forControlEvents:UIControlEventTouchUpInside];
  24.  
  25. //继续
  26. UIButton *resume = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  27. resume.frame = CGRectMake(, , , );
  28. [resume setTitle:@"继续" forState:UIControlStateNormal];
  29. [resume addTarget:self action:@selector(resumeDownloadOp) forControlEvents:UIControlEventTouchUpInside];
  30.  
  31. [self.view addSubview:start];
  32. [self.view addSubview:pause];
  33. [self.view addSubview:resume];
  34.  
  35. //文件名
  36. NSString *fileName = [NSString stringWithFormat:@"%@愿得一人听.mp3",NSTemporaryDirectory()];
  37. NSLog(@"%@",fileName);
  38.  
  39. //下载
  40. NSURLRequest *downloadRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:MusicOne]];
  41. self.downloadMusicOP = [[AFHTTPRequestOperation alloc]initWithRequest:downloadRequest];
  42. _downloadMusicOP.outputStream = [NSOutputStream outputStreamToFileAtPath:fileName append:NO];
  43.  
  44. [_downloadMusicOP setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
  45. CGFloat progress = ((float)totalBytesRead) / totalBytesExpectedToRead;
  46. [downProgressView setProgress:progress animated:YES];
  47. start.enabled = NO;
  48. [start setTitle:@"下载中" forState:UIControlStateNormal];
  49. }];
  50.  
  51. [_downloadMusicOP setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
  52. start.enabled = NO;
  53. [start setTitle:@"完成" forState:UIControlStateNormal];
  54. NSLog(@"download finish");
  55. NSLog(@"%@",[[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil]);
  56.  
  57. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  58. NSLog(@"error %@",error);
  59. }];
  60.  
  61. }
  62.  
  63. #pragma mark AFNetworking 下载之断点续传;
  64.  
  65. - (void)startDownloadOp
  66. {
  67. [_downloadMusicOP start];
  68. }
  69.  
  70. - (void)pausetDownloadOp
  71. {
  72. [_downloadMusicOP pause];
  73. }
  74.  
  75. - (void)resumeDownloadOp
  76. {
  77. [_downloadMusicOP resume];
  78. }

项目代码: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. python正则的中文处理(转)

    匹配中文时,正则表达式规则和目标字串的编码格式必须相同 print sys.getdefaultencoding() text =u"#who#helloworld#a中文x#" ...

  2. JQuery动态添加多个tab页标签

    jQuery是一个兼容多浏览器的js库,核心理念是write less,do more(写的更少,做的更多),jQuery使用户能更方便地处理HTML documents.events.实现动画效果, ...

  3. Thinkphp命名规范

    1.类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php: 2.类 ...

  4. 17-7-20-electron中主进程和渲染进程区别与通信

    老规矩,先吐槽,再记录. 今天被上司教育了将近一个小时.因为之前自动更新的模块,我认为已经完成了,但是还有一些细节没有完善好,就一直一直的被教育~ 事情全部做完,提交以后关闭issue! electr ...

  5. 循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)

    views.py from django.shortcuts import render,HttpResponse from django import forms import json impor ...

  6. Java HashSet的元素内容变化导致的问题

    概述 HashSet元素引用的对象的内容发生变化,会导致"元素不属于集合"的问题.事实上这个元素还在集合里,但是调用contains方法进行判断,得到的结果却是false. 正文 ...

  7. sql 预编译 in

    sql : "select * from json where id in (:paramName)"; 在使用Hibernate时,sql in的预编译语句为query.setP ...

  8. [bzoj3244][noi2013]树的计数 题解

    UPD: 那位神牛的题解更新了,在这里. ------------------------------------------------------------------------------- ...

  9. [NOI2015]小园丁与老司机(DP+上下界最小流)

    由于每行点的个数不超过1000,所以行内DP可以使用$O(n^2)$算法. 先找到每个点所能直接到达的所有点(x,y,x+y或x-y相同),用排序实现. 第一问:以行为阶段,对于每行,暴力枚举最有路径 ...

  10. [xsy2289]B

    题意:给一棵树,一次操作定义为删掉一条树边再加一条边,并且满足加完边后这还是一棵树,问在进行不超过$k$次操作后能构造出多少种不同的树 首先...矩阵树定理在边有边权的时候同样适用,这时可以把它看成重 ...