iOS里实现multipart/form-data格式上传文件
2017-03-06 00:23
706 查看
现在是学习笔记,后续会对内容做梳理
Http 请求(后面统一称为报文),包含请求头和请求体两部分,格式如下:
Objective-C 代码如下:
iOS网络请求之multipart/form-data提交数据
iOS里实现multipart/form-data格式上传文件
Http 请求(后面统一称为报文),包含请求头和请求体两部分,格式如下:
POST / HTTP/1.1 Content-Type:application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: w.sohu.com Content-Length: 21 Connection: Keep-Alive Cache-Control: no-cache txt1=hello&txt2=world
Objective-C 代码如下:
// #define kHttpRequestHeadContentTypeValueMultipart @"multipart/form-data; boundary=forjoritest" // #define kHttpRequestHeadContentTypeKey @"Content-Type" // #define kHttpRequestHeadBoundaryValue @"forjoritest" // #define kHttpRequestContentDisposition @"Content-Disposition: form-data" NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration]; NSURL *url = [NSURL URLWithString:[kDetectUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url]; mutableRequest.HTTPMethod = @"POST"; [mutableRequest addValue:kHttpRequestHeadContentTypeValueMultipart forHTTPHeaderField:kHttpRequestHeadContentTypeKey]; NSString *body = [NSString stringWithFormat:@"--%@\r\n%@;name=\"%@\"\r\n\r\n%@", kHttpRequestHeadBoundaryValue, kHttpRequestContentDisposition, kUploadParamApiKey, @"ApiKey"]; body = [body stringByAppendingString:[NSString stringWithFormat:@"\r\n--%@\r\n%@; name=\"%@\"\r\n\r\nApiSecret", kHttpRequestHeadBoundaryValue, kHttpRequestContentDisposition, kUploadParamApiSecret]]; body = [body stringByAppendingString:[NSString stringWithFormat:@"\r\n--%@\r\n%@; name=\"%@\"\r\n\r\n1", kHttpRequestHeadBoundaryValue, kHttpRequestContentDisposition, @"return_landmark"]]; body = [body stringByAppendingString:[NSString stringWithFormat:@"\r\n--%@\r\n%@; name=\"%@\"\r\n\r\ngender,age", kHttpRequestHeadBoundaryValue, kHttpRequestContentDisposition, @"return_attributes"]]; body = [body stringByAppendingString:[NSString stringWithFormat:@"\r\n--%@\r\n%@; name=\"%@\"; filename=\"%@\" Content-Type=image/jpeg\r\n\r\n", kHttpRequestHeadBoundaryValue, kHttpRequestContentDisposition, kUploadParamImageFile, kUploadParamImageFile]]; NSMutableData *data = [NSMutableData data]; [data appendData:[body dataUsingEncoding:NSUTF8StringEncoding]]; [data appendData:image]; [data appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", kHttpRequestHeadBoundaryValue] dataUsingEncoding:NSUTF8StringEncoding]]; mutableRequest.HTTPBody = data; [mutableRequest setValue:[NSString stringWithFormat:@"%lu", (unsigned long)data.length] forHTTPHeaderField:@"Content-Length"]; NSURLSessionUploadTask *task = [session uploadTaskWithRequest:mutableRequest fromData:nil completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { }]; [task resume];
参考资料
Multipart/form-data POST文件上传详解iOS网络请求之multipart/form-data提交数据
iOS里实现multipart/form-data格式上传文件
相关文章推荐
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传GOOD
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- iOS multipart/form-data格式上传文件的两种格式 uiimage 和 nscfstring
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- 用xmlhttp将html的数据打包成multipart/form-data格式,实现异步上传文件功能[转]
- 用xmlhttp将html的数据打包成multipart/form-data格式,实现异步上传文件功能
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- [转载红鱼儿]Delphi实现微信开发(3)如何使用multipart/form-data格式上传文件
- SpringMVC从数据库导入导出 CSV文件(利用multipart/form-data实现文件上传)
- 如何使用multipart/form-data格式上传文件
- 如何使用multipart/form-data格式上传文件
- java接收IOS上传的图片文件multipart/form-data类型
- spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。
- 如何使用multipart/form-data格式上传文件
- 如何使用multipart/form-data格式上传文件
- asp.net/c# 用<input type="file" />实现文件上传,multipart/form-data
- 安卓上传图片实例,multipart/form-data实现安卓上传文件的功能
- 如何使用multipart/form-data格式上传文件