iOS开发之多文件上传

//

//  ViewController.m

//  B03-多文件上传

//

//  Created by 0426iOS on 15/7/1.

//  Copyright (c) 2015年 0426iOS. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

NSString *strUrl = @"http://127.0.0.1/upload/upload-m.php";

//加载两个文件

NSString *fileName1 = @"oo.png";

NSString *path1 = [[NSBundle mainBundle] pathForResource:fileName1 ofType:nil];

NSData *data1 = [NSData dataWithContentsOfFile:path1];

NSString *fileName2 = @"xx.png";

NSString *path2 = [[NSBundle mainBundle] pathForResource:fileName2 ofType:nil];

NSData *data2 = [NSData dataWithContentsOfFile:path2];

NSDictionary *files = @{fileName1:data1,fileName2:data2};

NSDictionary *params = @{@"username":@"hhhhhhhhhhh"};

//上传多个文件

[self uploadFiles:strUrl files:files name:@"userfile[]" params:params];

}

#define kBOUNDARY @"aabbcc"

//上传多个文件

- (void)uploadFiles:(NSString *)strUrl files:(NSDictionary *)files name:(NSString *)name params:(NSDictionary *)param{

NSURL *url = [NSURL URLWithString:strUrl];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

request.HTTPMethod = @"post";

//Content-Type:multipart/form-data; boundary=----WebKitFormBoundarycwuJbGNWchuHGPRT

NSString *ct = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",kBOUNDARY];

[request setValue:ct forHTTPHeaderField:@"Content-Type"];

//

request.HTTPBody = [self makeBody:files name:name params:param];

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

//

if (!connectionError) {

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

if (httpResponse.statusCode == 200) {

//

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

NSLog(@"%@",json);

}else{

NSLog(@"服务器内部错误");

}

}else{

NSLog(@"请求错误%@",connectionError);

}

}];

}

//

- (NSData *)makeBody:(NSDictionary *)files name:(NSString *)name params:(NSDictionary *)param{

NSMutableData *mData = [NSMutableData data];

//准备文件

[files 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",kBOUNDARY];

[mStr appendFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n",name,key];

[mStr appendString:@"application/octet-stream\r\n"];

[mStr appendString:@"\r\n"];

[mData appendData:[mStr dataUsingEncoding:NSUTF8StringEncoding]];

//2

[mData appendData:data];

}];

//准备表单中的数据

[param 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",kBOUNDARY];

[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",kBOUNDARY];

[mData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];

return mData.copy;

}

@end

时间: 2024-12-21 19:16:08

iOS开发之多文件上传的相关文章

jsp开发无刷新文件上传程序代码

原文:jsp开发无刷新文件上传程序代码 源代码下载地址:http://www.zuidaima.com/share/1550463484660736.htm 无刷新文件上传程序代码 源代码截图

iOS开发助手、ipa上传工具、苹果APP快速上架辅助工具Appuploader

ipa上传助手Appuploader是一个iOS APP上架辅助助手,帮助开发者可以快速的申请iOS证书打包ipa文件上传到App Store审核. 非常方便的iOS上架助手,提升上架效率. ipa上传助手Appuploader官网 ipa上传助手Appuploader介绍 一.可以在Windows系统直接申请iOS证书上传ipa(不用苹果电脑也不用装Mac虚拟机) 二.帮助不懂上架流程.初次接触上架的开发者,快速掌握上架流程 在这可以学习iOS证书申请和各类证书用法.打包ipa文件.测试iOS

iOS多线程与网络开发之小文件上传

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 A.文件上传 思路: 发送文件数据给server 使用post请求 必须手动设置请求头: 内

Web开发安全之文件上传安全

很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // File informa

python运维开发(二十一)----文件上传和验证码+session

内容目录: 文件上传 HTML Form表单提交 ajax提交 原生ajax提交 jQuery Ajax提交 验证码+session 文件和图片的上传功能

HTML5开发 拖拽文件上传

Drag&Drop 拖拽功能的处理 关于HTML5拖拽文件上传,其实国外已经有很多网站有这样的应用,最早推出拖拽上传应用的是 Gmail,它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送,但其实现在利用HTML5的功能实现,主要借助于新版支持的浏览器来实现,IE还是弱很多. 拖拽上传应用主要使用了以下 HTML5技术: Drag&Drop : HTML5基于拖拽的事件机制.File API : 可以很方便的让 Web 应用访问文件对象,File API 包括FileList.Bl

iOS网络-通过NSURLConnection文件上传

//文件上传步骤 //01 修改请求方法为POST //02 设置请求头信息,告知服务器这是一个文件上传 //Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyadprzBVdfHIhqXJ //03 设置请求体(有固定格式) //分隔符:----WebKitFormBoundaryyadprzBVdfHIhqXJ //1)拼接文件参数 /* --分隔符 Content-Disposition: form-data

Java Web开发中的文件上传与下载

一.借助Struts2框架 1.环境搭建 1.1 导包:conmmons-fileupload-1.2.1.jar conmmons-io-1.4.jar 以及其他框架的jar包 2.页面:略 3.文件上传: 3.1 设计一个文件上传工具类:FileUploadUtils 1 public class FileUploadUtils{ 2 3 //文件要上传到的路径,可配置 4 @Resource 5 private String filePath; 6 7 private String cre

IOS开发教程之put上传文件的服务器的配置及实例分享-备用

感谢大神分享 1,HTTP常见的方法 GET 获取指定资源 POST 2M 向指定资源提交数据进行处理请求,在RESTful风格中用于新增资源 HEAD 获取指定资源头部信息PUT 替换指定资源(不支持浏览器操作)DELETE 删除指定资源 2,配置服务器的put请求方式: 复制代码代码如下: 1> n 打开终端p cd /etc/apache2p sudo vim httpd.conf n 在vim中输入p /httpd-dav.conf• 查找httpd-dav.confp 按0将光标移动至