POST方式上传文件
2015-10-19 11:10
288 查看
#import "NSMutableURLRequest+Multipart.h" /**随便的字符串作为分隔符*/ static NSString *boundary = @"itcastupload"; @implementation NSMutableURLRequest (Multipart) + (instancetype)requestWithURL:(NSURL *)url andLoaclFilePath:(NSString *)loaclFilePath andFileName:(NSString *)fileName { // 2. post请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:2.0f]; // 2.1 指定post方法 request.HTTPMethod = @"POST"; // 2.2 拼接数据体 NSMutableData *dataM = [NSMutableData data]; // 1. \r\n--(可以随便写, 但是不能有中文)\r\n NSString *str = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary]; [dataM appendData:[str dataUsingEncoding:NSUTF8StringEncoding]]; // 2. Content-Disposition: form-data; name="userfile(php脚本中用来读取文件的字段)"; filename="demo.json(要保存到服务器的文件名)" str = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\" \r\n", fileName]; [dataM appendData:[str dataUsingEncoding:NSUTF8StringEncoding]]; // 3. Content-Type: application/octet-stream(上传文件的类型)\r\n\r\n str = @"Content-Type: application/octet-stream\r\n\r\n"; [dataM appendData:[str dataUsingEncoding:NSUTF8StringEncoding]]; // 4. 要上传的文件的二进制流 // 要上传图片的二进制 [dataM appendData:[NSData dataWithContentsOfFile:loaclFilePath]]; // 5. \r\n--(可以随便写, 但是不能有中文)--\r\n str = [NSString stringWithFormat:@"\r\n--%@--\r\n", boundary]; [dataM appendData:[str dataUsingEncoding:NSUTF8StringEncoding]]; // 2.4 设置请求体 request.HTTPBody = dataM; // 设置请求头 // Content-Length(文件的大小) 290 // Content-Type multipart/form-data; boundary(分隔符)=(可以随便写, 但是不能有中文) NSString *headerStr = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; [request setValue:headerStr forHTTPHeaderField:@"Content-Type"]; return request; } @end
相关文章推荐
- 使用AsyncHttpClient碰到的问题及解决方法
- Xrebel监控调优你的程序
- Hibernate Merge (Illegal attempt to associate a collection with two open sessions)
- android静态代码分析工具Android lint
- Topcoder SRM671
- IntelliJ Idea 常用快捷键列表
- 接口JSon字符串格式
- LoadRuner性能测试之内存分析方法及步骤(Windows)
- 关于加班
- C#.NET里面抽象类和接口有什么区别
- 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
- JS+CSS实现分类动态选择及移动功能效果代码
- Could not resolve placeholder 'jdbc.username' in string value "${jdbc.username}"
- vbox中centeos 虚拟机共享window7主机文件夹
- linux DNS服务器配置
- 总结Oracle,sqlserver,mysql中查询10-20条记录的写法
- leetcode Binary Tree Zigzag Level Order Traversal
- Entity Framework - Func引起的数据库全表查询
- 转 Nginx+FastCGI到底是谁影响超时时间
- Python常用内建函数(string&&list)