IOS网络请求,封装文件上传操作详解手机开发
2023-06-13 09:20:07 时间
+ (JRUploadRequest *)uploadRequestWithPath:(NSString *)path;
- (JRUploadRequest *)initWithPath:(NSString *)path;
//开始上传
- (void)upload;
//2.请求题 //1 拼接开始标志(服务器遇到这个标记就开始解析)("JR"要和请求头中的数据一致) [body appendData:JREncode(@"--JR/r/n")]; //2 设置服务器接受参数和文件名称( NSString * filename = [NSString stringWithFormat:@"Content-Disposition: form-data;name=/"file/";filename=/"%@/" /r/n", self.fileName]; [body appendData:JREncode(filename)]; //3 拼接上传的文件类型 NSString * mimeType= [self getMimeType: self.sourcePath]; NSLog(@"======%@",mimeType); NSString * contentType=[NSString stringWithFormat:@"Content-Type: %@/r/n",mimeType]; [body appendData:JREncode(contentType)]; //4 拼接换行 [body appendData:JREncode(@"/r/n")]; //5 拼接数据 [body appendData:self.sourceData]; //6 拼接换行 [body appendData:JREncode(@"/r/n")]; //7 拼接结束标志 [body appendData:JREncode(@"--JR--/r/n")]; //8 设置请求体 self.HTTPBody=body;
//1 设置文件的长度 [self setValue:[NSString stringWithFormat:@"%ld",body.length] forHTTPHeaderField:@"Content-Length"]; //2 设置类型和开始标志 [self setValue:@"multipart/form-data; boundary=JR" forHTTPHeaderField:@"Content-Type"]; //上传 [NSURLConnection sendAsynchronousRequest:self queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"========%@",str); }];
//获取本地的URL NSURL * url=[NSURL fileURLWithPath:path];//不要使用URLWithString这个方法 NSURLRequest * request=[NSURLRequest requestWithURL:url]; NSURLResponse * response=nil; //不能使用异步方法,因为如果是异步的,返回的字符串是空 [NSURLConnection sendSynchronousRequest:request returningResponse: response error:nil]; return response.MIMEType;
//2.请求题 //1 拼接开始标志(服务器遇到这个标记就开始解析)("JR"要和请求头中的数据一致) [body appendData:JREncode(@"--JR/r/n")]; //2 设置服务器接受参数和文件名称( NSString * filename = [NSString stringWithFormat:@"Content-Disposition: form-data;name=/"file/";filename=/"%@/" /r/n", self.fileName]; [body appendData:JREncode(filename)]; //3 拼接上传的文件类型 NSString * mimeType= [self getMimeType: self.sourcePath]; NSLog(@"======%@",mimeType); NSString * contentType=[NSString stringWithFormat:@"Content-Type: %@/r/n",mimeType]; [body appendData:JREncode(contentType)]; //4 拼接换行 [body appendData:JREncode(@"/r/n")]; //5 拼接数据 [body appendData:self.sourceData]; //6 拼接换行 [body appendData:JREncode(@"/r/n")]; //7 拼接结束标志 [body appendData:JREncode(@"--JR--/r/n")]; //8 设置请求体 self.HTTPBody=body;
//1 设置文件的长度 [self setValue:[NSString stringWithFormat:@"%ld",body.length] forHTTPHeaderField:@"Content-Length"]; //2 设置类型和开始标志 [self setValue:@"multipart/form-data; boundary=JR" forHTTPHeaderField:@"Content-Type"]; //上传 [NSURLConnection sendAsynchronousRequest:self queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"========%@",str); }];
//获取本地的URL NSURL * url=[NSURL fileURLWithPath:path];//不要使用URLWithString这个方法 NSURLRequest * request=[NSURLRequest requestWithURL:url]; NSURLResponse * response=nil; //不能使用异步方法,因为如果是异步的,返回的字符串是空 [NSURLConnection sendSynchronousRequest:request returningResponse: response error:nil]; return response.MIMEType;
相关文章
- iOS小技能:文件预览、分享
- 手把手教你制作一款iOS越狱App,伪装微信位置
- iOS开发证书发布证书,推送证书,描述文件的生成总集(一)
- 【2021】IOS证书(.p12)和描述文件(.mobileprovision)申请
- iOS描述文件(.mobileprovision)一键申请
- iOS 上传AppStore 被拒汇总
- iOS证书(.p12)和描述文件(.mobileprovision)申请
- 【2021】IOS证书(.p12)和描述文件(.mobileprovision)申请
- iOS开发之17个常用代码整理详解手机开发
- iOS 自定义瀑布流相册控件详解手机开发
- iOS开发 根据日期计算是星期几详解手机开发
- iOS调整按纽图片文字title位置的代码详解手机开发
- iOS开发系列课程(07) — 分栏视图控制器详解手机开发
- iOS-数据加密-MD5加密详解手机开发
- iOS开发– 开发环境,证书和授权文件详解手机开发
- appLinux开发探索之路:从iOS APP开始(linux开发ios)
- Linux与iOS:越来越亲密的合作伙伴(linux与ios)
- iOS 14.5.1“降速门”奥秘被发现:一个按钮就解决
- 使用iOS就能操作Oracle数据库(ios上oracle)
- IOS开发教程之put上传文件的服务器的配置及实例分享