//File Upload steps//01 Modify Request method to post//02 Set the request header information to inform the server this is a file upload//content-type:multipart/form-data, boundary=----WEBKITFORMBOUNDARYYADPRZBVDFHIHQXJ//03 Setting the request body (with fixed format)//delimiter:----WEBKITFORMBOUNDARYYADPRZBVDFHIHQXJ//1) Stitching file Parameters /*--delimiter content-disposition:form-data; name= "file"; filename= "Snip20160117_798.png" content-type:image/pn G Blank line file parameters*/ //2) Splicing non-file parameters /*--delimiter content-disposition:form-data; name= "username" Blank line xiaomage*/ //3) End Mark /*-- delimiter--*//*------WEBKITFORMBOUNDARYYADPRZBVDFHIHQXJ content-disposition:form-data; name= "file"; filename= "Snip20160117_ 798.png "content-type:image/png file parameter------webkitformboundaryyadprzbvdfhihqxj content-disposition:form-data; Name= "username" xiaomage------webkitformboundaryyadprzbvdfhihqxj--*/#import "ViewController.h"#defineKboundary @ "----WEBKITFORMBOUNDARYYADPRZBVDFHIHQXJ"#defineknewline [@ "\ r \ n" datausingencoding:nsutf8stringencoding]@interfaceViewcontroller ()@end@implementationViewcontroller-(void) Touchesbegan: (Nsset<uitouch *> *) touches withevent: (Uievent *)Event{[self upload];}-(void) upload{//1. Determine the request pathNsurl *url = [Nsurl urlwithstring:@"Http://120.25.226.186:32812/upload"]; //2. Create a mutable Request objectNsmutableurlrequest *request =[Nsmutableurlrequest Requestwithurl:url]; //3. Modify the request method to postRequest. HttpMethod =@"POST"; //4. Setting the request header information//content-type:multipart/form-data, boundary=----WEBKITFORMBOUNDARYYADPRZBVDFHIHQXJNSString *header =[nsstring stringWithFormat:@"multipart/form-data; boundary=%@", Kboundary]; [Request Setvalue:header Forhttpheaderfield:@"Content-type"]; Nsmutabledata*filedata =[Nsmutabledata data]; //5.1 Stitching file Parameters /*--delimiter content-disposition:form-data; name= "file"; filename= "Snip20160117_798.png" content-type:image/pn G Blank line file parameters*/[FileData appenddata:[[nsstring stringWithFormat:@"--%@", Kboundary] datausingencoding:nsutf8stringencoding]]; [FileData Appenddata:knewline]; //Name : Parameter names---file specified//FileName: What name to save after uploading to the serverNSString *STRM =@"content-disposition:form-data; name=\"File\"; filename=\ "123.png\""; [FileData APPENDDATA:[STRM datausingencoding:nsutf8stringencoding]; [FileData Appenddata:knewline]; //content-type: Data type of File[FileData appenddata:[@"Content-type:image/png"Datausingencoding:nsutf8stringencoding]]; [FileData Appenddata:knewline]; [FileData Appenddata:knewline]; UIImage*image = [UIImage imagenamed:@"snip20160117_798"]; NSData*imagedata =uiimagepngrepresentation (image); [FileData Appenddata:imagedata]; [FileData Appenddata:knewline]; //5.2 Stitching Non-file parameters /*--delimiter content-disposition:form-data; name= "username" Blank line xiaomage*/[FileData appenddata:[[nsstring stringWithFormat:@"--%@", Kboundary] datausingencoding:nsutf8stringencoding]]; [FileData Appenddata:knewline]; //Name : Parameter name username (specified)[FileData appenddata:[@"content-disposition:form-data; name=\"Username\""Datausingencoding:nsutf8stringencoding]]; [FileData Appenddata:knewline]; [FileData Appenddata:knewline]; [FileData appenddata:[@"Xiaomage"Datausingencoding:nsutf8stringencoding]]; [FileData Appenddata:knewline]; //5.3 End Identification /*-- delimiter--*/[FileData appenddata:[[nsstring stringWithFormat:@"--%@--", Kboundary] datausingencoding:nsutf8stringencoding]]; //6. Set the request bodyRequest. Httpbody =FileData; //7. Sending an asynchronous request[Nsurlconnection sendasynchronousrequest:request queue:[nsoperationqueue Mainqueue] completionHandler:^ ( Nsurlresponse * _nullable response, NSData * _nullable data, Nserror *_nullable Connectionerror) { //8. Parsing DataNSLog (@"%@", [[NSString Alloc]initwithdata:data encoding:nsutf8stringencoding]); }]; }@end
iOS network-upload via Nsurlconnection file