• 下载操作(使用KV0监听进度)
 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {// 获得网络管理者AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];// 要下载文件的urlNSURL *url = [NSURL URLWithString:@"http://localhost/abc.mp4"];// 创建请求对象NSURLRequest *request = [NSURLRequest requestWithURL:url];// 声明一个进度对象NSProgress *progress = nil;// 异步[[manager downloadTaskWithRequest:request progress:&progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {// 告诉服务器下载的文本保存的位置在那里NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];NSLog(@"file = %@",targetPath);return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {NSLog(@"response = %@,filePath = %@",response,filePath);}] resume];// 使用 KVO 监听进度[progress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:nil];
}- (void)dealloc {// 移除kvo监听[self removeObserver:self forKeyPath:@"name"];}- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {if([object isKindOfClass:[NSProgress class]]) {// 获得进度值NSProgress *progress = (NSProgress *)object;NSLog(@"下载进度----%f",progress.fractionCompleted);NSLog(@"localizedDescription = %@",progress.localizedDescription);NSLog(@"localizedAdditionalDescription = %@",progress.localizedAdditionalDescription);}
}
  • 上传操作(单个文件)
/***  上传单个文件*/* (void)uploadFile {// 获得网络管理者AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];[manager POST:@"http://localhost/post/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {// 获得要上传文件的二进制数据NSData *fileData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"001.png" ofType:nil]];/**参数1:文件的二进制数据参数2:对应服务器接收文件数据的字段参数3:保存的文件名参数4:告诉服务器上传的文件类型*/[formData appendPartWithFileData:fileData name:@"userfile" fileName:@"oooo.png" mimeType:@"image/png"];} success:^(AFHTTPRequestOperation *operation, id responseObject) {NSLog(@"responseObject = %@",responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) {}];
}
  • 上传多个文件
/***  上传多个文件*/
- (void)uploadFile2 {// 获得网络管理者AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];// 普通参数NSDictionary *params = @{@"username":@"rose"};[manager POST:@"http://localhost/post/upload-m.php" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {// 获得要上传文件的二进制数据NSData *fileData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"001.png" ofType:nil]];/**参数1:文件的二进制数据参数2:对应服务器接收文件数据的字段参数3:保存的文件名参数4:告诉服务器上传的文件类型*/[formData appendPartWithFileData:fileData name:@"userfile[]" fileName:@"oooo.png" mimeType:@"image/png"];// 第二个文件// 文件urlNSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"head4.png" withExtension:nil];[formData appendPartWithFileURL:fileUrl name:@"userfile[]" fileName:@"111.png" mimeType:@"image/png" error:NULL];} success:^(AFHTTPRequestOperation *operation, id responseObject) {NSLog(@"responseObject = %@",responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) {}];
}

完成操作
注意
这里的KVO不需要我们自己手动释放。若像以前我们自己创建的KVO 一定要记得释放。

AFN(上传、下载)相关推荐

  1. 利用 AFN 上传相册或拍照图片

    概述 自定义上传图片请求,自定义调取相册及拍照,方便多处使用时调用. 详细 代码下载:http://www.demodashi.com/demo/10718.html 由于项目中多处需要上传图片,我们 ...

  2. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...

  3. linux快捷上传下载文件

    借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混): ...

  4. Java中使用FTPClient上传下载

    转自:http://blog.csdn.net/hbcui1984/article/details/2720204 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文 ...

  5. JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载

    ​ 文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...

  6. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:宇的季节 cnblogs.com/chenkeyu/p/80 ...

  7. 教你如何实现c#文件上传下载功能

    简单介绍一下c#文件上传下载功能实现. NuGet 安装SqlSugar Model文件下新建 DbContext 类 public class DbContext {public DbContext ...

  8. SecureCRT上传下载文件

    2019独角兽企业重金招聘Python工程师标准>>> SecureCRT是一个仿真终端连接工具.它可以方便的连接SSH服务器,远程管理Linux.同时,它还能使用多种协议方便的上传 ...

  9. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1

    转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...

  10. Linux环境Shell脚本上传下载阿里云OSS文件

    为什么80%的码农都做不了架构师?>>>    Linux环境Shell脚本上传下载阿里云OSS文件 背景 工作中由于我们项目生成的日志文件比较重要,而本地磁盘空间有限存储不了多久, ...

最新文章

  1. listary 指定目录搜索_everything
  2. python文本分析
  3. asp.net的ViewState学习
  4. 阿里研究员谷朴:警惕软件复杂度困局
  5. 无法创建t的通用数组_创建通用数组的问题
  6. mac python 图_Python之图片OCR识别(Mac)
  7. windows怎么远程关linux系统,从windows远程关闭linux、windows系统.doc
  8. 开源力量 Linux内核源码深度解析与开发实战
  9. 利用MDTools和Hydraw设计专业的液压阀块
  10. python行业中性_知乎
  11. 杭州旅游全攻略,详细!
  12. 关于医学影像中的轴位面(横断面)、冠状面、矢状面的解释
  13. vue3 + vite +ts 引入静态图片
  14. 微软2016校园招聘4月在线笔试 总结
  15. 阿里巴巴原来这么容易就能进去…
  16. 按键手机Java游戏回顾,绿豆蛙勇闯冒险岛java 老式按键手机青蛙闯关游戏
  17. EMC电磁兼容测试项目简介
  18. 剩余运算符--...
  19. 计算机组装与维护 听课记录,《计算机组装与维护》之“机箱和电源”说课稿...
  20. 飞秋的文件读取、写入代码

热门文章

  1. 彻底读懂行为经济学名著《思考,快与慢》
  2. 如何简单的抓取网站数据
  3. Word插入图片后随着文字的增多图片会到下一页的解决方法
  4. Mysql5.7 You can't specify target table 'table' for update in FROM clause
  5. 使用MATLAB的residue()命令求传递函数的展开式
  6. C++中的typeid关键字
  7. 如何通过网络ActiveSync同步
  8. scala利用akka框架封装数据库操作api微服项目
  9. PSENet原理介绍
  10. python的pandas库的pd.read_excel()常用解析