表单上传呢一般是当要上传图片的时候用的网络请求方式。上传http post请求的表单格式是这样的
Content-type: multipart/form-data, boundary=qwerdf
--<span style="font-family: Arial, Helvetica, sans-serif;">qwerdf</span>
content-disposition: form-data; name="field1"
i will upload head!
--<span style="font-family: Arial, Helvetica, sans-serif;">qwerdf</span>
content-disposition: form-data; name="pic"; filename="head.png"
Content-Type: image/png
... contents of boris.png ...
--<span style="font-family: Arial, Helvetica, sans-serif;">qwerdf</span>--
格式是固定的,错了不会上传成功的,而且注意的是图片上传的时候name 和filename 都是有双引号的 而Content-Type 是没有双引号的 而且结尾要以 -- 表示表单结束
我们今天要讲的是AFNetworking表单上传,AFN呢帮我们吧表单的格式都封装好了,可以省掉很多的麻烦,灰常的好用,下面我们说说AFN怎么上传图片
首先。。。。。。。。引入头文件啦
第一步 创建AFN管理者,设置一些属性
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer.timeoutInterval = 20;
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpeg", @"image/png", @"application/octet-stream", @"text/json", nil];
第二步 调用AFN的上传图片的方法
</pre><pre name="code" class="objc">[manager POST:url parameters:newLowKeyDic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//利用for循环上传多张图片
int i = 1;
for (UIImage * image in self.photoselectVC.images) {
//把图片转换为二进制流
NSData *imageData = UIImagePNGRepresentation(image);
//按照表单格式把二进制文件写入formData表单
[formData appendPartWithFileData:imageData name:@"upLoad" fileName:[NSString stringWithFormat:@"%d.png", i] mimeType:@"image/png"];
i++;
}
} success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"发送成功");
NSLog(@"responseObject == %@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"发送失败");
}];
是不是很简单呢,这种方法很大众化,毕竟自己写的比较麻烦的,而且表单的格式是非常严格的 每个换行都是不能被忽略的,所以我还是建议一些新手们用AFN进行上传图片啊 等等,当然如果你们感觉AFN的一些功能不能满足你们,可以自己创建表单上传喽。
每周一段
“人们常说左眼跳财右眼跳灾。那我两眼一起跳是什么意思?“,”说明你的人身意外险快起作用了“。