简述: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
本章到此结束 欢迎各位码友随意转载并指正