簡述:app
其實使用原生的NSURLConnection
上傳是一個很是哀傷的事情,要拼接無數次,而且多一個換行,一個空格,一個標點都不行,既嚴格,又shit 因此通常都是用的都是三方框架:AFNetwork,ASIHTTPRequest
等,那麼這裏我就簡簡單單的寫一下。框架
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //由於文件比較大 咱們這裏就使用POST了 //一、肯定URL NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/upload"]; //二、肯定請求 由於用POST請求,因此這裏使用NSMutableURLRequest NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //2.一、 設置請求方式 post request.HTTPMethod = @"POST"; //2.二、請求體個人拼一個會兒........ //request.HTTPBody = ?; //三、發送請求 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }]; }
Content-Type
是在咱們的請求頭裏面的至於換多少行,我也一一的拼接出來了,大家拼接的話能夠跟着下面的圖一步一步拼接.post
代碼:url
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //由於文件比較大 咱們這裏就使用POST了 //一、肯定URL NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/upload"]; //二、肯定請求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; /******************************************************************/ // 設置請求頭 [request setValue:@"multipart/form-data; boundary=----WebKitFormBoundaryUFNaH6losNxu4xDq" forHTTPHeaderField:@"Content-Type"]; /******************************************************************/ // 設置請求體 // 設置請求體 // 給請求體加入固定格式數據 這裏也是使用的也是可變的,由於多嘛 NSMutableData *data = [NSMutableData data]; /******************************************************************/ // 開始標記 [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]]; /******************************************************************/ // 上傳文件參數 //圖片數據 而且轉換爲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]]; /******************************************************************/ // 非文件參數 [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]]; /******************************************************************/ // 添加結束標記 [data appendData:[@"------WebKitFormBoundaryUFNaH6losNxu4xDq--" dataUsingEncoding:NSUTF8StringEncoding]]; [data appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; /******************************************************************/ //請求方式 request.HTTPMethod = @"POST"; //請求體 request.HTTPBody = data; //三、發送請求 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }]; }
補充:code
其實原生的只是拼接起來很是的麻煩,須要帶一點細心,不過出bug真的要讓人瘋掉,你們能夠嘗試一下。orm
結束blog
本章到此結束 歡迎各位碼友隨意轉載並指正