iOS开发之文件上传
来源:互联网 发布:2个excel表格数据比对 编辑:程序博客网 时间:2024/06/03 21:32
#define XLBoundary @"XL"#define XLLine @"\r\n"#define XLEncode(string) [string dataUsingEncoding:NSUTF8StringEncoding]// 1.请求服务器地址NSURL *serverURL = [NSURL URLWithString:@""];// 2.创建一个POST请求NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:serverURL];request.HTTPMethod = @"POST";// 3.设置请求体NSMutableData *body = [NSMutableData data];// 设置文件的其他参数NSDictionary *params = @{@"":@""};// 文件参数// 分界线[body appendData:XLEncode(@"--")];[body appendData:XLEncode(XLBoundary)];// 换行[body appendData:XLEncode(XLLine)];// 获取本地文件的地址, 同时转换成URL编码 文件的名字 文件的后缀名NSURL *urlPath = [[NSBundle mainBundle] URLForResource:@"" withExtension:@""];// 创建请求NSURLRequest *requestPath = [NSURLRequest requestWithURL:urlPath];// 发送请求NSURLResponse *response = nil;// 通过发送本地文件路径获取 MIMEType[NSURLConnection sendSynchronousRequest:requestPath returningResponse:&response error:nil];NSString *mimeType = response.MIMEType;// 声明上传文件的格式NSString *type = [NSString stringWithFormat:@"Content-Type:%@", mimeType];[body appendData:XLEncode(type)];// 换行[body appendData:XLEncode(XLLine)];// 将本地文件路径转换为data数据类型NSData *fileData = [NSData dataWithContentsOfURL:urlPath];[body appendData:XLEncode(XLLine)];[body appendData:fileData];[body appendData:XLEncode(XLLine)];// 要上传的文件名NSString *fileName = @"";// 添加字段名称NSString *disposition = [NSString stringWithFormat:@"Content-Disposition:form-data; name=\"file\"; filename\"%@\"", fileName];[body appendData:XLEncode(disposition)];[body appendData:XLEncode(XLLine)];// 非文件参数[params enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { [body appendData:XLEncode(@"--")]; [body appendData:XLEncode(XLBoundary)]; [body appendData:XLEncode(XLLine)]; NSString *disposition = [NSString stringWithFormat:@"Content-Disposition:form-data; name=\"%@\"", key]; [body appendData:XLEncode(disposition)]; [body appendData:XLEncode(XLLine)]; [body appendData:XLEncode(XLLine)]; [body appendData:XLEncode([obj description])]; [body appendData:XLEncode(XLLine)];}];// 结束标记[body appendData:XLEncode(@"--")];[body appendData:XLEncode(XLBoundary)];[body appendData:XLEncode(@"--")];[body appendData:XLEncode(XLLine)];// 设置HTTPBodyrequest.HTTPBody = body;// 4.设置请求头(告诉服务器这次传的诗歌文件数据, 同时是一个上传的请求)NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", XLBoundary];[request setValue:contentType forHTTPHeaderField:@"Content-type"];// 5.发送请求[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {}];
0 0
- IOS开发之文件上传
- iOS开发之文件上传
- iOS开发之文件上传两招
- iOS 开发之网络——文件上传&文件下载
- iOS多线程与网络开发之小文件上传
- iOS开发(OC)——AFNetworking之文件上传
- iOS开发之上传图片
- iOS开发之AFNetworking上传
- iOS之文件上传、下载(上传)
- javaEE开发之文件上传
- php开发之文件上传
- Java开发之文件上传
- iOS开发 - 封装文件上传工具类
- iOS开发-post文件上传总结
- IOS学习开发网络篇:文件上传
- iOS开发网络篇 一一 文件上传
- ios开发进阶之网络04 数据解析 文件下载上传
- iOS之文件上传、下载(下载)
- Raspberry Pi I2C (Python)
- eclipse中开发NDK以及环境搭建(一)
- ubuntu开启ssh
- 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知
- java8新特性lambda表达式, 函数式接口以及Steam流和新的日期时间例子代码
- iOS开发之文件上传
- 数据结构之栈
- Windows:Python3下安装Scrapy
- C#中转义字符串
- STL库vector的使用
- Java客户端连接不了安装在CentOS7上的redis解决方案
- vim 基础命令<二>
- 单链表的合并,排序与翻转
- FFmpeg