1 -(void)uploadPhotoImageWithUrl:(NSString*)url
2 userIMID:(NSString*)userIMID
3 imageData:(NSData*)imageData
4 imageName:(NSString*)imageName{
5
6 NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
7
8 //根据url初始化request
9 NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
10 cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
11 timeoutInterval:10];
12
13 //分界线 --AaB03x
14 NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
15 //结束符 AaB03x--
16 NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
17
18
19 //http body的字符串
20 NSMutableString *body=[[NSMutableString alloc]init];
21 //参数的集合的所有key的集合
22
23 if(imageData){
24 ////添加分界线,换行
25 [body appendFormat:@"%@\r\n",MPboundary];
26
27 //声明pic字段,文件名为boris.png
28 [body appendFormat:@"Content-Disposition: form-data; name="%@"; filename="%@"\r\n",userIMID,imageName];
29 //声明上传文件的格式
30 [body appendFormat:@"Content-Type: image/jpge,image/gif, image/jpeg, image/pjpeg, image/pjpeg\r\n\r\n"];
31 }
32
33 //声明结束符:--AaB03x--
34 NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
35 //声明myRequestData,用来放入http body
36 NSMutableData *myRequestData=[NSMutableData data];
37
38 //将body字符串转化为UTF8格式的二进制
39 [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
40 if(imageData){
41 //将image的data加入
42 [myRequestData appendData:imageData];
43 }
44 //加入结束符--AaB03x--
45 [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
46
47 //设置HTTPHeader中Content-Type的值
48 NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
49 //设置HTTPHeader
50 [request setValue:content
51 forHTTPHeaderField:@"Content-Type"];
52
53 //设置Content-Length
54 [request setValue:[NSString stringWithFormat:@"%ld", (unsigned long)[myRequestData length]]
55 forHTTPHeaderField:@"Content-Length"];
56
57 //设置http body
58 [request setHTTPBody:myRequestData];
59
60 //http method
61 [request setHTTPMethod:@"POST"];
62
63
64 // URLSession
65 NSURLSession *session = [NSURLSession sharedSession];
66 // 上传任务
67 NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request
68 fromData:myRequestData
69 completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
70 {
71
72 if (!data) {
73 NSString *result = [[NSString alloc] initWithData:data
74 encoding:NSUTF8StringEncoding];
75 NSLog(@"%@ %@", result, response);
76 } else {
77 NSString *result = [[NSString alloc] initWithData:data
78 encoding:NSUTF8StringEncoding];
79 NSLog(@"upload ok! %@ ", result);
80 }
81 }];
82
83 [task resume];
84
85
86 }