afn post请求上传文件_iOS利用AFNetworking(AFN) 实现图片上传

1.上传图片以二进制流的形式上传

1 #pragma

mark - 文件上传

2 - (IBAction)uploadImage

3 {

4

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

38

[formData

appendPartWithFileData:data name:@"file" fileName:fileName

mimeType:@"image/png"];

39

}];//file改为后台接收的字段或参数

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];

当要上传多张图片时只需在multipartFormRequestWithMethod方法上添加这些代码就好

AFNetWorking使用multipartFormRequestWithMethod方法上传多张图片问题

int i=0;

NSMutableURLRequest *request = [[AFNetWorkSingleton

shareInstance] multipartFormRequestWithMethod:@"POST"

path:@"Mindex/getimg" parameters:nil

constructingBodyWithBlock:^(idformData){

for(UIImage

*eachImage in array)

{

NSData *imageData =

UIImageJPEGRepresentation(eachImage,0.5);

[formData appendPartWithFileData:imageData

name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString

stringWithFormat:@"abc%d.jpg",i ]

mimeType:@"image/jpeg"];//file改为后台接收的字段或参数

i++;

}

}];

2.上传图片以二进制流的字符串的形式上传

-(void)postPhotosToShare_API23_withPid:(NSString *)_pid

andUid:(NSString *)_uid andScore:(float)_score andContent:(NSString

*)_content andAnonymous:(NSString *)_anonymous

andImgArray:(NSMutableArray *)_imgArray

{

path =

@"interface/product.php/product/";//path为网站开发人员告知的除去IP后的地址

NSURL *baseUrl1 = [NSURL

URLWithString:urlIP];//urlIP为网站开发人员告知的IP地址,例:http://192..168.1.1

httpClient =

[[AFHTTPClient alloc]initWithBaseURL:baseUrl1];

NSMutableDictionary

*parameters = [[NSMutableDictionary alloc]init];

[parameters setObject:_pid

forKey:@"pid"];

[parameters setObject:_uid

forKey:@"uid"];

[parameters

setObject:[NSString stringWithFormat:@"%f",_score]

forKey:@"score"];

[parameters

setObject:_content forKey:@"content"];

[parameters

setObject:_anonymous forKey:@"anonymous"];

if

(_imgArray.count!=0)

{

int imgCount=0;

for (UIImage *myImg in _imgArray)

{

NSData

*imageData = UIImageJPEGRepresentation(myImg,0.7);//进行图片压缩

NSString

*_encodedImageStr = [imageData base64Encoding];//进行64位转码转为字符串

[parameters setObject:_encodedImageStr forKey:[NSString

stringWithFormat:@"img[%i]",imgCount]];//进行img[%i]改为后台接收的字段或参数

imgCount

++;

}

}

request = [httpClient

requestWithMethod:@"POST" path:path parameters:parameters];

[request

setTimeoutInterval:kDataExpiryTime];//设置请求时间

[AFJSONRequestOperation

addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];

AFJSONRequestOperation

*operation = [[AFJSONRequestOperation

alloc]initWithRequest:request];

[operation

setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,

id responseObject) {

NSDictionary *json = [NSJSONSerialization

JSONObjectWithData:operation.responseData

options:NSJSONReadingMutableContainers error:nil];

[self getResultSuccess:json

withTage:Get_API_Tag_23];//对api进行标记,可要可不要

}

failure:^(AFHTTPRequestOperation *operation, NSError *error) {

[self getResultFailed:error];

}];

[operation start];

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[每日一题jQuery] jQuery选择器总结:进一步过滤、同级操作、后代操作

jQuery选择器继承自CSS的风格,可以通过jQuery选择器找出特定的DOM元素,在此基础上对该元素做相应处理。jQuery不仅支持简单的标签选择器、类选择器、id选择器,还针对表单状态、子元素、元素顺序提供相应的选择器。如果熟练运用,则…

美国计算机专业硏究生,2014年美国计算机专业研究生排名

1 Massachusetts Institute of Technology麻省理工学院2 University of California -Berkeley加州大学伯克利分校3 Carnegie Mellon University卡内基梅隆大学4 University of Illinois-Urbana Champaign伊利诺伊大学香槟分校5 Cornell University康奈尔大学5 Georgia Institut…

abap开发注释快捷键_让ABAP开发者更加轻松的若干快捷键

引言ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言。ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利。我发现有两样东西太cool了:朴实…

[译]不要在UI主线程中进行耗时的操作

原文: Why Ice Cream Sandwich Crashes your App 问题 自Android Ice Cream Sandwich发布后, 这个问题就开始在StackOverflow弥散开来: 我的应用在Android2.x上运行良好,但是在3.x 和4.x系统上总是强退,是什么导致的&a…

计算机桌面备份在哪里,电脑备份文件在哪里

电脑是我们经常使用的工具,为了放在电脑出现系统问题,有的朋友会将电脑系统备份,但是不知道电脑备份文件放在什么地方了,电脑备份文件在哪里呢?很多朋友还是不知道的,所以针对电脑备份文件保存在哪里的问题…

如何用python打印田字格_如何用 3D 打印一双顶级跑鞋回形针

马拉松赛场上的跑鞋五光十色,除了美观之外,它们还有一个重要作用:保护运动员不受伤害。跑步时,从脚碰到地面开始会受到地面的反作用力。从着陆的减速到随着脚步推蹬过程的加速,这一过程中脚和地面的压力会达到两个峰值…

VS Code 0.5添加ES6支持和Git工具改进

微软多平台Visual Studio 工具VS Code在7月的这次更新中提供了惠及好几种语言的开发者的多项更新。对ECMAScript6 (ES6)的支持就是其亮点之一,另外,所有用户还会发现另一些很有用处的改进——尤其是使用Git或者工程中有大量文件的用户。\\2个新的命令行选…

河北软件职业技术学院计算机专业分数线,河北软件职业技术学院历年分数线 2021河北软件职业技术学院录取分数线...

一、2019年河北软件职业技术学院各省录取分数线及录取位次统计表1、河北软件职业技术学院2019年在山东录取分数线如下:文科录取批次高职专科275分,最低录取位次为208607名、理科录取批次高职专科333分,最低录取位次为274752名;2、河北软件职业…

什么可以作为gcroot_面包果既能当水果又可以作为粮食,国内却无法普及,这是为什么?...

水果是我们大多数人日常都会吃的一种食物,现在国内的水果种类也是非常多,不管是国内本有的还是从国外进口的。但是你吃过面包果吗?可千万不要把它和非洲大陆上的面包树混为一谈,面包果和它半毛钱关系没有,它的原产地在…

Scrum meeting报告

Scrum Meeting报告 要点: 讨论XueBa系统已有的和待实现的功能短期内的任务分配初步确定小组成员在第一轮迭代开发中任务一、 XueBa系统已有的和待实现的功能 项目完成情况: 用户信息管理:注册(邮箱)、登录、注销(退出当前账号)、信息修改…

cookies的存值问题

2019独角兽企业重金招聘Python工程师标准>>> cookies存值问题,项目中遇到问题初始化时由于cookies中存在冒号导致存到cookies中时取出来被转码了,冒号的转码从cookies中取出来为%A3 ,当然一开始我的设想是保存到cookies换一种保存…

计算机专业联考335分,联考专业分、文化分达到多少能过本科线(附2019年美术高考分数线汇总...

原标题:联考专业分、文化分达到多少能过本科线(附2019年美术高考分数线汇总说明:2019年美术高考录取分数线含美术类各批次文化控制线、专业控制线,美术统考合格线。控制线指的是,您达到了某个批次的控制线,就有资格报考…

FragmentTabHost切换Fragment时避免重复加载UI

使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态。 解决办法:在Fragment onCreateView方法中缓存View private View rootView;//缓存Fragment vie…

c++ 一个函数包括多个返回值判断_Python函数的概念和使用

函数为了便于程序的维护和更好的实现模块化,好的程序都会分解为很多函数。可以这么说,对于任何的编程语言,函数都是一个非常重要的概念。python 不仅简化了函数的定义过程,而且还大量借鉴了其他函数编程语言中的优秀特性。本章内容…

MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

深入理解MySQL的数据库引擎的类型 作者: 字体:[增加 减小] 类型:转载本篇文章是对MySQL的数据库引擎的类型进行了详细的分析介绍,需要的朋友参考下你能用的数据库引擎取决于mysql在安装的时候是如何被编译的。要添加一个新的引擎&…

微型计算机中JNZ,微机原理jnz是什么指令_微机原理内存分配图

微机原理 数据传送指令微机原理 4指令系统 3通过数据传输地址 地址传送指令 标志传送指令微机原理 4指令系统 3通过数据传输地址 地址传送指令 标志传送指令微机原理指令 微机原理sub指令 csdn微机原理 4指令系统 3通过数据传输地址 地址传送指令 标志传送指令微机原理 4指令系…

vim的安装和配置

vim的安装和配置 使用Linux时,有很多编辑器可供选择,况且vim也不是那么地友好,为什么仍要使用vim呢?鸟哥的解释是: 一、安装vim:sudo apt-get install vim 二、配置vim 在用戶主目录下【~/】建一…

分段处理_连续油管无限级可开关固井滑套分段压裂工艺

连续油管无限级可开关固井滑套分压工艺具有无需射孔、处理级数不受限制、施工效率高等特点,同时可为后期水平井控水及重复压裂提供井筒条件。作业前滑套与套管管柱一趟下入井内,正常进行固井后,依靠固井水泥实现压裂层间封隔。通过连续油管下…

计算机在超声的应用,计算机在医学超声成像中应用.pdf

综 述~计算机在医学超声成像中的应用李义兵1余大昆1刘晓东2(1.咸宁学院生物医学工程系湖北省咸宁市437100;2.襄樊市中心医院湖北省襄樊市441021)摘要介绍了计算机在医学超声成像领域的应用,着重讨论了医学超声图像处理…

常用正则:身份证号码验证正则表达式

需要一个简单的验证身份证号的正则表达式,从网上查了很多,都有问题,主要是只要超过15位,都能够通过,于是自己查了半天手册,写了下面这个式子,能够满足简单的要求:1、15位或18位&…