官方建议AFN的使用方法
1. 定义一个全局的AFHttpClient:包含有
1> baseURL
2> 请求
3> 操作队列 NSOperationQueue
2. 由AFHTTPRequestOperation负责所有的网络操作请求
0.导入框架准备工作
•1. 将框架程序拖拽进项目
•2. 添加iOS框架引用
–SystemConfiguration.framework
–MobileCoreServices.framework
•3. 引入
#import “AFNetworking.h”
4. 修改xxx-Prefix.pch文件
#import
#import
1.AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理
1 @interfaceViewController ()
2
3 {
4
5 // AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理
6
7 AFHTTPClient *_httpClient;
17 NSOperationQueue *_queue;
18
19 }
1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4
5 NSURL *url = [NSURL URLWithString:@"http://192.168.3.255/~apple/qingche"];
6 _httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
7
8 _queue = [[NSOperationQueue alloc] init];
9 }
2.利用AFN实现文件上传操作细节
1 #pragma mark - 文件上传
2 - (IBAction)uploadImage
3 {
4 /*
5 此段代码如果需要修改,可以调整的位置
6
7 1. 把upload.php改成网站开发人员告知的地址
8 2. 把file改成网站开发人员告知的字段名
9 */
10 // 1. httpClient->url
11
12 // 2. 上传请求POST
13 NSURLRequest *request = [_httpClient multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:nil constructingBodyWithBlock:^(id formData) {
14 // 在此位置生成一个要上传的数据体
15 // form对应的是html文件中的表单
16
17
18 UIImage *image = [UIImage imageNamed:@"头像1"];
19 NSData *data = UIImagePNGRepresentation(image);
20
21 // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
22 // 要解决此问题,
23 // 可以在上传时使用当前的系统事件作为文件名
24 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
25 // 设置时间格式
26 formatter.dateFormat = @"yyyyMMddHHmmss";
27 NSString *str = [formatter stringFromDate:[NSDate date]];
28 NSString *fileName = [NSString stringWithFormat:@"%@.png", str];
29
30
31 /*
32 此方法参数
33 1. 要上传的[二进制数据]
34 2. 对应网站上[upload.php中]处理文件的[字段"file"]
35 3. 要保存在服务器上的[文件名]
36 4. 上传文件的[mimeType]
37 */
38 [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"];
39 }];
40
41 // 3. operation包装的urlconnetion
42 AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
43
44 [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
45 NSLog(@"上传完成");
46 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
47 NSLog(@"上传失败->%@", error);
48 }];
49
50 //执行
51 [_httpClient.operationQueue addOperation:op];
AFNetworking之多图片-文件上传
在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...
.NetCore WebApi利用Swagger文档实现选择文件上传
介绍 实现这个功能主要还是依赖过滤器 在Swagger中利用 IOperationFilter 操作来实现文件上传 与之前处理结合Idr4授权一样的处理方式,不同的是授权处理的是Security,而文 ...
spring mvc利用MultipartResolver解析Multipart/form-data进行文件上传
之前的表单数据都是文本数据,现记录:利用MultipartResolver进行文件上传. ①首先,需引入commons-fileUpload和commons-io jar包,pom.xml文件的坐标: ...
利用百度编辑器和IIS限制文件上传的大小
1.百度编辑器的大小限制 针对不同的文件类型限制大小 例如图片是imageMaxSize ,依次类推 /* 前后端通信相关的配置,注释只允许使用多行方式 */ { /* 上传图片配置项 */ ...
iOS多线程与网络开发之小文件上传
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. /** 取得本地文件的MIMEType */ 2 - (void) getMIMEType { 3 // Socket 实现断点上传 4 5 //apa ...
[PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]
1.数据库连接 configmysql.php <?php $q = mysql_connect("localhost:8889","root",&quo ...
Java 利用Apache Commons Net 实现 FTP文件上传下载
package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...
利用Django REST framework快速实现文件上传下载功能
安装包 pip install Pillow 设置 首先在settings.py中定义MEDIA_ROOT与MEDIA_URL.例如: MEDIA_ROOT = os.path.join(BASE_D ...
利用Selenium实现图片文件上传的两种方式介绍
在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...
随机推荐
Ruby--strftime
-- [17 Oct 2016 05:37:18AM]:%e %b %Y %H:%M:%S%p -- [Oct 17, 2016]:%b %d, %Y -- [10-17-16 05:37]:%m-% ...
Git实现从本地添加项目到远程仓库
Git是现在最流行的版本控制系统之一了,今天也试试了,成功了上传了远程仓库,接下来看看我是怎么做的. (ps:七牛抓取不到图片,请移步:http://blog.csdn.net/u011043843/ ...
深度学习研究理解5:Visualizing and Understanding Convolutional Networks(转)
Visualizing and understandingConvolutional Networks 本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主 ...
2. hdfs
一.Hdfs的shell 所有hadoop的fs的shell均用uri路径作为参数 uri格式:schema://authority/path.hdfs的schema是hdfs.其中,schema和a ...
利用BBRSACryptor实现iOS端的RSA加解密
背景 RSA这种非对称加密被广泛的运用于网络数据的传输,但其在iOS上很难直接实现,BBRSACryptor框架通过移植openssl实现了iOS端的RSA,本文将介绍如何使用BBRSACryptor ...
[Docker] Docker Client in Action
Pull the docker image: docker pull hello-world Show all the images: docker images Remove the image: ...
web应用中Spring ApplicationContext的动态更新
在web应用中时常需要修改配置,并动态的重新加载ApplicationContext.比如,设置和切换数据库.以下给出一个方法,并通过代码验证可行性. 方法的基本思路是,为WebApplication ...
redis对比memcached
摘要 : 简单地比较Redis与Memcached的区别,大多数都会得到以下观点: 1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储. 2 Re ...
初识Avro
Avro是Hadoop生态圈的一部分,由Hadoop的创始人Doug Cutting牵头开发,当前最新版本1.8.2.Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用.它的主要特点有: ...
MT【311】三角递推数列
已知数列$\{a_n\}$满足$a_1=\dfrac{1}{2},a_{n+1}=\sin\left(\dfrac{\pi}{2}a_n\right),S_n$ 为$\{a_n\}$的前$n$项和,求 ...