簡(jiǎn)述:
其實(shí)使用原生的NSURLConnection
上傳是一個(gè)非常哀傷的事情轨域,要拼接無(wú)數(shù)次锨用,并且多一個(gè)換行逻悠,一個(gè)空格单寂,一個(gè)標(biāo)點(diǎn)都不行慢味,既嚴(yán)格蜘欲,又shit 所以一般都是用的都是三方框架:AFNetwork,ASIHTTPRequest
等,那么這里我就簡(jiǎn)簡(jiǎn)單單的寫一下章姓。
- 1啥刻、首先不管什么秃殉,我們要把最大的幾部操作完成代碼如下:
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//因?yàn)槲募容^大 我們這里就使用POST了
//1坝初、確定URL
NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/upload"];
//2、確定請(qǐng)求 因?yàn)橛肞OST請(qǐng)求钾军,所以這里使用NSMutableURLRequest
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//2.1鳄袍、 設(shè)置請(qǐng)求方式 post
request.HTTPMethod = @"POST";
//2.2、請(qǐng)求體我的拼一個(gè)會(huì)兒........
//request.HTTPBody = ?;
//3吏恭、發(fā)送請(qǐng)求
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}];
}
2拗小、看完上面,那么我們就剩下樱哼,最爽的一幕了哀九,拼拼拼拼
好了先看看這個(gè)圖剿配,上傳文件和普通的POST請(qǐng)求不一樣,它多了一些這個(gè)阅束,然而這里就有是需要我們拼接的內(nèi)容呼胚,分兩部分上面的
Content-Type
是在我們的請(qǐng)求頭里面的下面的那些寫紅色字的就是我們所請(qǐng)求 需要拼接的
-
至于換多少行,我也一一的拼接出來(lái)了息裸,你們拼接的話可以跟著下面的圖一步一步拼接.
代碼:
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//因?yàn)槲募容^大 我們這里就使用POST了
//1蝇更、確定URL
NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/upload"];
//2、確定請(qǐng)求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
/******************************************************************/
// 設(shè)置請(qǐng)求頭
[request setValue:@"multipart/form-data; boundary=----WebKitFormBoundaryUFNaH6losNxu4xDq" forHTTPHeaderField:@"Content-Type"];
/******************************************************************/
// 設(shè)置請(qǐng)求體
// 設(shè)置請(qǐng)求體
// 給請(qǐng)求體加入固定格式數(shù)據(jù) 這里也是使用的也是可變的界牡,因?yàn)槎嗦? NSMutableData *data = [NSMutableData data];
/******************************************************************/
// 開(kāi)始標(biāo)記
[data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"Liiii.png\"" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"Content-Type: image/png" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
/******************************************************************/
// 上傳文件參數(shù)
//圖片數(shù)據(jù) 并且轉(zhuǎn)換為Data
UIImage *image = [UIImage imageNamed:@"Liiii"];
NSData *imagedata = UIImagePNGRepresentation(image);
[data appendData:imagedata];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
/******************************************************************/
// 非文件參數(shù)
[data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"Content-Disposition: form-data; name=\"username\"" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"LitterL" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
/******************************************************************/
// 添加結(jié)束標(biāo)記
[data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq--" dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
/******************************************************************/
//請(qǐng)求方式
request.HTTPMethod = @"POST";
//請(qǐng)求體
request.HTTPBody = data;
//3簿寂、發(fā)送請(qǐng)求
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}];
}
補(bǔ)充:
其實(shí)原生的只是拼接起來(lái)非常的麻煩,需要帶一點(diǎn)細(xì)心宿亡,不過(guò)出bug真的要讓人瘋掉常遂,大家可以嘗試一下。
結(jié)束
本章到此結(jié)束
歡迎各位碼友隨意轉(zhuǎn)載并指正