ios 多文件上传
/**
* 上传多个文件
*
* @param url 请求接口地址
* @param filedata 文件名称和数据(key:value)
* @param btnName 上传网页的btn (接口)
* @param parms 附加上传参数
*/
-(void)httpSendDataWithUrl:(NSString*)url data:(NSDictionary*)filedata name:(NSString*)btnName parms:(NSDictionary*)parms
{
NSString *httpUrl=url;
//----------------------Post方法的URL和请求头-----------
NSMutableURLRequest *mRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:httpUrl]];
mRequest.HTTPMethod=@"post";
//Content-Type:multipart/form-data; boundary=----WebKitFormBoundarywrkpby4PbAPpMcFc
NSString *str=[NSString stringWithFormat:@"multipart/form-data; boundary=%@",KEYWard];
[mRequest setValue:str forHTTPHeaderField :@"Content-Type"];
mRequest.HTTPBody=[self makeBodydata:filedata name:btnName parms:parms];
//----------------------Post方法的URL和请求头-----------
[NSURLConnection sendAsynchronousRequest:mRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (!connectionError) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
if (httpResponse.statusCode == 200) {
NSError *error=nil;
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
if (error) {
NSLog(@"json解析错误!!!!!!");
}
else
{
NSLog(@"%@",json);
}
}else{
NSLog(@"服务器内部错误");
}
}else{
NSLog(@"请求错误%@",connectionError);
}
}];
}
-(NSData*)makeBodydata:(NSDictionary*)filedata name:(NSString*)btnName parms:(NSDictionary*)parms
{
NSMutableData *mData = [NSMutableData data];
//准备文件
[filedata enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSData *data, BOOL *stop) {
// ------WebKitFormBoundarycwuJbGNWchuHGPRT
// Content-Disposition: form-data; name="userfile[]"; filename="Snip20150701_10.png"
// Content-Type: image/png
//1
NSMutableString *mStr = [NSMutableString string];
[mStr appendFormat:@"\r\n--%@\r\n",KEYWard];
[mStr appendFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n",btnName,key];
[mStr appendString:@"application/octet-stream\r\n"];
[mStr appendString:@"\r\n"];
[mData appendData:[mStr dataUsingEncoding:NSUTF8StringEncoding]];
//2
[mData appendData:data];
}];
//准备表单中的数据
[parms enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, BOOL *stop) {
// ------WebKitFormBoundarycwuJbGNWchuHGPRT
// Content-Disposition: form-data; name="username"
//
// 345345
NSMutableString *mStr = [NSMutableString string];
[mStr appendFormat:@"\r\n--%@\r\n",KEYWard];
[mStr appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n",key];
[mStr appendString:@"\r\n"];
[mStr appendFormat:@"%@\r\n",value];
[mData appendData:[mStr dataUsingEncoding:NSUTF8StringEncoding]];
}];
NSString *end = [NSString stringWithFormat:@"--%@--\r\n",KEYWard];
[mData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
return mData.copy;
}
ios 多文件上传的更多相关文章
- 【iOS】文件上传小记
iOS由该系统提供API可以实现可以实现文件的上传和下载,有两种方法来. NSURLConnection与NSURLSession. 当中NSURLConnection是使用非常久的的一种方式.NSU ...
- IOS 多文件上传 Java web端(后台) 使用List<MultipartFile> 接收出现的问题
先上正确的示例: 主要是设置我们的request的content-type为multipart/form-data NSDictionary *param = @{@"assignee&qu ...
- IOS后台文件上传
public ModelAndView GetImage(HttpServletRequest request, HttpServletResponse response) throws Exce ...
- iOS实现文件上传功能模块
iOS实现文件上传功能,首先要知道的是,上传到服务器的数据格式,一般采用HTTP文件上传协议.如下图 如图所示,只要设置好了HTTP的协议格式,就可以实现文件上传功能. 代码如下: //图片上传模块 ...
- iOS开发之网络编程--使用NSURLConnection实现文件上传
前言:使用NSURLConnection实现文件上传有点繁琐. 本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...
- 多文件上传 iOS功能
多文件上传 iOS功能,原文来自ios教程网整理的,大家可以看看演示:ios.662p.com ,喜欢的朋友可以看看我的博客吧. NSURL* url = [NSURL URLWithString:@ ...
- 实现多文件上传在iOS开发中
该功能实现了实现多文件上传在iOS开发中,喜欢的朋友可以研究一下吧. NSURL* url = [NSURL URLWithString:@"xxx"]; ASIFormDataR ...
- iOS文件上传文件URL错误Invalid parameter not satisfying: fileURL'
一:iOS文件上传提示URL错误 Invalid parameter not satisfying: fileURL' 二:解决方法: NSString *imagePath = [[NSBundle ...
- IOS And WCF 上传文件
IOS And WCF Story 研究IOS上传到WCF图片的小功能,WCF实现服务端的文件上传的例子很多,单独实现IOS发送图片的例子也很多,但是两个结合起来的就很少了. 可以通过base64来上 ...
随机推荐
- winserver2008 Oracle 11g 安装
.在Windows Server2008R2上安装Oracle Database 11g Release 2,下载64位的安装程序,地址: 文件1:http://download.oracle.com ...
- ACM/ICPC 之 数据结构-线段树+区间离散化(POJ2528)
这道题用线段树做更方便更新和查询,但是其数据范围很大,因此要将离散化和线段树结合起来,算是一道比较经典的线段树+离散化的例题. 线段树的离散化有很多方法,在这里,我先用一次结点离散化,间接将源左右端点 ...
- HDU 1000 & HDU1001 & 字符串连接
A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- codeforces 490B.Queue 解题报告
题目链接:http://codeforces.com/problemset/problem/490/B 题目意思:给出每个人 i 站在他前面的人的编号 ai 和后面的人的编号 bi.注意,排在第一个位 ...
- ubuntu10.04+win7双系统,重装win7后,恢复grub引导菜单以及命令行引导linux
我在我的小Y上安装了ubuntu10.04和win7旗舰版的双系统,采用的是grub引导.今天win7不知道哪儿出了问题,windows update更新一直报错,(当然360也是打不上滴)网上查了很 ...
- 51nod 1449 砝码称重(贪心算法)
题目:传送门. 题意:中文题. 题解:左物右码,w进制.m%w==0||m%w==1||m%w==w-1都是可以的,否则是NO. #include <iostream> #include ...
- August 10th, 2016, Week 33rd, Wednesday
The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...
- mongodb启动后台服务
将MongoDB部署在服务器机子上时mongodb的实例应为后台服务进行的方式运行,而非前台进程,否则远程会话一关闭mongodb也跟着关闭了.本文介绍mongodb后台服务进程开启和关闭的操作. 开 ...
- Centos以rpm方式进行安装MySql
安装过很多次mysql了,却没好好总结过,每次安装完了都忘,下次还要重新Google,这次总结下,自己以后也有的查. 1.安装采用的的rpm包的方式,安装前要先看系统内是否安装了旧版本的MySql和m ...
- Jquery的普通事件和on的委托事件
以click的事件为例: 普通的绑定事件:$('.btn').click(function(){})绑定 on绑定事件:$(documnet).on('click','btn2',function() ...