NSURLSessionUploadTask 上传

 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 }

 

posted @ 2016-01-08 11:18  御剑青冥  阅读(534)  评论(0编辑  收藏  举报