北京新闻媒体,沈阳seo关键字优化,保定建设局网站,小程序数据库怎么建立说明#xff1a;文件上传使用的时POST请求#xff0c;通常把要上传的数据保存在请求体中。本文介绍如何不借助第三方框架实现iOS开发中得文件上传。 由于过程较为复杂#xff0c;因此本文只贴出部分关键代码。 主控制器的关键代码#xff1a; YYViewController.m 1 #import…说明文件上传使用的时POST请求通常把要上传的数据保存在请求体中。本文介绍如何不借助第三方框架实现iOS开发中得文件上传。 由于过程较为复杂因此本文只贴出部分关键代码。 主控制器的关键代码 YYViewController.m 1 #import YYViewController.h2 3 #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding]4 5 interface YYViewController ()6 7 end8 9 implementation YYViewController
10
11 - (void)viewDidLoad
12 {
13 [super viewDidLoad];
14 // Do any additional setup after loading the view, typically from a nib.
15 }
16
17 - (void)upload:(NSString *)name filename:(NSString *)filename mimeType:(NSString *)mimeType data:(NSData *)data parmas:(NSDictionary *)params
18 {
19 // 文件上传
20 NSURL *url [NSURL URLWithString:http://192.168.1.200:8080/YYServer/upload];
21 NSMutableURLRequest *request [NSMutableURLRequest requestWithURL:url];
22 request.HTTPMethod POST;
23
24 // 设置请求体
25 NSMutableData *body [NSMutableData data];
26
27 /***************文件参数***************/
28 // 参数开始的标志
29 [body appendData:YYEncode(--YY\r\n)];
30 // name : 指定参数名(必须跟服务器端保持一致)
31 // filename : 文件名
32 NSString *disposition [NSString stringWithFormat:Content-Disposition: form-data; name\%\; filename\%\\r\n, name, filename];
33 [body appendData:YYEncode(disposition)];
34 NSString *type [NSString stringWithFormat:Content-Type: %\r\n, mimeType];
35 [body appendData:YYEncode(type)];
36
37 [body appendData:YYEncode(\r\n)];
38 [body appendData:data];
39 [body appendData:YYEncode(\r\n)];
40
41 /***************普通参数***************/
42 [params enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
43 // 参数开始的标志
44 [body appendData:YYEncode(--YY\r\n)];
45 NSString *disposition [NSString stringWithFormat:Content-Disposition: form-data; name\%\\r\n, key];
46 [body appendData:YYEncode(disposition)];
47
48 [body appendData:YYEncode(\r\n)];
49 [body appendData:YYEncode(obj)];
50 [body appendData:YYEncode(\r\n)];
51 }];
52
53 /***************参数结束***************/
54 // YY--\r\n
55 [body appendData:YYEncode(--YY--\r\n)];
56 request.HTTPBody body;
57
58 // 设置请求头
59 // 请求体的长度
60 [request setValue:[NSString stringWithFormat:%zd, body.length] forHTTPHeaderField:Content-Length];
61 // 声明这个POST请求是个文件上传
62 [request setValue:multipart/form-data; boundaryYY forHTTPHeaderField:Content-Type];
63
64 // 发送请求
65 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
66 if (data) {
67 NSDictionary *dict [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
68 NSLog(%, dict);
69 } else {
70 NSLog(上传失败);
71 }
72 }];
73 }
74
75 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
76 {
77 // Socket 实现断点上传
78
79 //apache-tomcat-6.0.41/conf/web.xml 查找 文件的 mimeType
80 // UIImage *image [UIImage imageNamed:test];
81 // NSData *filedata UIImagePNGRepresentation(image);
82 // [self upload:file filename:test.png mimeType:image/png data:filedata parmas:{username : 123}];
83
84 // 给本地文件发送一个请求
85 NSURL *fileurl [[NSBundle mainBundle] URLForResource:itcast.txt withExtension:nil];
86 NSURLRequest *request [NSURLRequest requestWithURL:fileurl];
87 NSURLResponse *repsonse nil;
88 NSData *data [NSURLConnection sendSynchronousRequest:request returningResponse:repsonse error:nil];
89
90 // 得到mimeType
91 NSLog(%, repsonse.MIMEType);
92 [self upload:file filename:itcast.txt mimeType:repsonse.MIMEType data:data parmas:{
93 username : 999,
94 type : XML}];
95 }
96
97 end 补充说明 文件上传请求数据格式 部分文件的MIMEType 转载于:https://www.cnblogs.com/zengshuilin/p/5764419.html