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 }

 

转载于:https://www.cnblogs.com/Merrill/p/5112556.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值