#import "ViewController.h"
#define ZYXBoundary @"520it"
#define ZYXEncode(string) [string dataUsingEncoding:NSUTF8StringEncoding]
#define ZYXNewLine [@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建请求
NSURL *url = [NSURL URLWithString:@"http://www.example.com:8080/upload"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
// 设置请求头(告诉告诉服务器,这是一个文件上传的请求)
[request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", ZYXBoundary]
forHTTPHeaderField:@"Content-Type"];
// 设置请求体
NSMutableData *body = [NSMutableData data];
// 文件参数
/*
--分割线\r\n
Content-Disposition: form-data; name="参数名"; filename="文件名"\r\n
Content-Type: 文件的MIMEType\r\n
\r\n
文件数据
\r\n
*/
// 分割线
[body appendData:ZYXEncode(@"--")];
[body appendData:ZYXEncode(ZYXBoundary)];
[body appendData:ZYXNewLine];
// 文件参数名
[body appendData:ZYXEncode([NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"test.png\""])];
[body appendData:ZYXNewLine];
// 文件的类型
[body appendData:ZYXEncode([NSString stringWithFormat:@"Content-Type: image/png"])];
[body appendData:ZYXNewLine];
// 文件数据
[body appendData:ZYXNewLine];
// UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)
UIImage *image = [UIImage imageNamed:@"placeholder"];
[body appendData:UIImagePNGRepresentation(image)];
// [body appendData:[NSData dataWithContentsOfFile:@"/Users/zhaoyingxin/Desktop/test.png"]];
[body appendData:ZYXNewLine];
// 非文件参数
/*
--分割线\r\n
Content-Disposition: form-data; name="参数名"\r\n
\r\n
参数值
\r\n
*/
// 分割线
[body appendData:ZYXEncode(@"--")];
[body appendData:ZYXEncode(ZYXBoundary)];
[body appendData:ZYXNewLine];
// 参数名
[body appendData:ZYXEncode([NSString stringWithFormat:@"Content-Disposition: form-data; name=\"username\""])];
[body appendData:ZYXNewLine];
// 参数值
[body appendData:ZYXNewLine];
[body appendData:ZYXEncode(@"solozyx")];
[body appendData:ZYXNewLine];
// 结束标记
/*
--分割线--\r\n
*/
[body appendData:ZYXEncode(@"--")];
[body appendData:ZYXEncode(ZYXBoundary)];
[body appendData:ZYXEncode(@"--")];
[body appendData:ZYXNewLine];
request.HTTPBody = body;
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSLog(@"%@", [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
}];
}
//2016-08-07 15:33:09.963 文件上传[54746:831242] {
// success : 上传成功
//}
@end
NSURLConnection文件上传-底层拼接出一个文件
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 今天开始做头像上传模块,原本想偷懒用AFN第三方去做图片上传,可是不知道是因为参数还是后台,老是上传失败。无法只能...
- 使用NSURLConnection上传文件上传文件,使用POST还是PUT请求?根据原来HTTP的定义使用PUT来...