ios文件,图片上传服务器
2015-10-18 00:12
363 查看
- (void)upload:(NSString *)name filename:(NSString *)filename mimeType:(NSString *)mimeType data:(NSData *)data parmas:(NSDictionary *)params { // 文件上传 NSURL *url = [NSURLURLWithString:@"http://123.57.89.97:7070/t2o/app/member/modifyFace"]; NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url]; request.HTTPMethod =@"POST"; // 设置请求体 NSMutableData *body = [NSMutableDatadata]; /***************文件参数***************/ // 参数开始的标志 [body appendData:YYEncode(@"--YY\r\n")]; // name : 指定参数名(必须跟服务器端保持一致) // filename : 文件名 NSString *disposition = [NSStringstringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", name, filename]; [body appendData:YYEncode(disposition)]; NSString *type = [NSStringstringWithFormat:@"Content-Type: %@\r\n", mimeType]; [body appendData:YYEncode(type)]; [body appendData:YYEncode(@"\r\n")]; [body appendData:data]; [body appendData:YYEncode(@"\r\n")]; /***************普通参数***************/ [params enumerateKeysAndObjectsUsingBlock:^(id key,id obj, BOOL *stop) { // 参数开始的标志 [body appendData:YYEncode(@"--YY\r\n")]; NSString *disposition = [NSStringstringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", key]; [body appendData:YYEncode(disposition)]; [body appendData:YYEncode(@"\r\n")]; [body appendData:YYEncode(obj)]; [body appendData:YYEncode(@"\r\n")]; }]; /***************参数结束***************/ // YY--\r\n [body appendData:YYEncode(@"--YY--\r\n")]; request.HTTPBody = body; // 设置请求头 // 请求体的长度 [request setValue:[NSStringstringWithFormat:@"%zd", body.length]forHTTPHeaderField:@"Content-Length"]; // 声明这个POST请求是个文件上传 [request setValue:@"multipart/form-data; boundary=YY"forHTTPHeaderField:@"Content-Type"]; // 发送请求 [NSURLConnectionsendAsynchronousRequest:request queue:[NSOperationQueuemainQueue] completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) { if (data) { NSDictionary *dict = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableLeaveserror:nil]; NSLog(@"上传成功========%@", dict); } else { NSLog(@"上传失败"); } }]; } NSDictionary * dic = [NSDictionarydictionaryWithObjectsAndKeys:myDelegate.MEMBER_ID,@"MEMBER_ID",nil]; [selfupload:@"face"filename:@"picker.png"mimeType:@"image/png"data:data parmas:dic]; self upload:<#(NSString *)#> filename:<#(NSString *)#> mimeType:<#(NSString *)#> data:<#(NSData *)#> parmas:<#(NSDictionary *)#>
图片参数 - 图片名 - 类型 -- 本地图片路径 - - 其它参数
1、在iOS开发中,图片上传的请求体非常难写,格式要求非常严格,出一点错误都会造成上传失败,或请求数据失败,先看格式:
--Boundary+72D4CD655314C423
Content-Disposition: form-data; name="uploadFile"; filename="001.png"
Content-Type:image/png
Content-Transfer-Encoding: binary
... contents of boris.png ...
--Boundary+72D4CD655314C423--
这是一个不带其他任务参数,body中只有一张图就要写成这样
分别说明一下:
--Boundary+72D4CD655314C423 // 分割符,以“--”开头,后面的字随便写,只要不写中文即可
Content-Disposition: form-data; name="uploadFile"; filename="001.png" // 这里注明服务器接收图片的参数(类似于接收用户名的userName)及服务器上保存图片的文件名
Content-Type:image/png // 图片类型为png
Content-Transfer-Encoding: binary // 编码方式
// 这里是空一行,必不可少!!
... contents of boris.png ... // 图片数据部分
--Boundary+72D4CD655314C423-- // 分隔符后面以"--"结尾,表明结束
2、如果有其他表单数据,如传用户ID等参数,也要写成以上格式:
--Boundary+72D4CD655314C423
[align=left]Content-Disposition: form-data; name="userId"[/align]
[align=left] [/align]
[align=left]254[/align]
[align=left]--Boundary+72D4CD655314C423[/align]
[align=left]Content-Disposition: form-data; name="shopId"[/align]
[align=left] [/align]
[align=left]18718[/align]
相关文章推荐
- iOS 简单的描述KVO使用
- 整理iOS9适配中出现的坑(图文)
- iOS开发技巧之code snippets(代码片段)
- IOS开发之----协议与委托(Protocol and Delegate) 实例解析
- iOS新闻客户端开发教程2--应用图标和启动图片设置
- iOS Core Animation 简明系列教程
- iOS加载本地Json文件,b并转为模型数据
- iOS设计模式 - 命令
- 写iOS SDK注意事项
- iOS辅助功能Accessibility浅析
- iOS知识点
- cisco 10条IOS管理命令
- iOS应用沙盒机制浅析
- iOS之Xcode设置点滴记录(一)
- iOS_官方例子汇总下载
- iOS UDP编程
- 解决三星 BIOS 模式没有 Fast Bios Mode选项 U盘动项问题
- 中国的手写输入法iOS8.1在崩溃
- iOS基础知识:if 语句以及if语句的使用注意事项
- ios-屏幕适配masonry的使用