01 | (NSString*) memberUploadavatar:(UIImage *)image { |
02 | NSString *action = @ "action=uploadavatar" ; |
03 | NSString *mainUrl = [self getMainUrl]; |
04 | NSString *unixTime = [NSString stringWithFormat:@ "timestamp=%ld" , ( time_t ) [[NSDate date] timeIntervalSince1970]]; |
05 | // NSString *unixTime = @"timestamp=1429629388"; |
06 | NSMutableArray *nameList = [[NSMutableArray alloc] init]; |
07 | [nameList addObject:unixTime]; |
08 | [nameList addObject:action]; |
09 | NSString *sign = [self generateSign:mainUrl nameList:nameList]; |
10 | NSString *url = [NSString stringWithFormat:@ "%@?%@&%@&sign=%@" , mainUrl, action, unixTime, sign]; |
11 | |
12 | //要上传的图片 |
13 | // UIImage *image=[params objectForKey:@"pic"]; |
14 | //分界线的标识符 |
15 | NSString *TWITTERFON_FORM_BOUNDARY = @ "AaB03x" ; |
16 | //根据url初始化request |
17 | NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] |
18 | cachePolicy:NSURLRequestReloadIgnoringLocalCacheData |
19 | timeoutInterval:10]; |
20 | //分界线 --AaB03x |
21 | NSString *MPboundary=[[NSString alloc]initWithFormat:@ "--%@" ,TWITTERFON_FORM_BOUNDARY]; |
22 | //结束符 AaB03x-- |
23 | NSString *endMPboundary=[[NSString alloc]initWithFormat:@ "%@--" ,MPboundary]; |
24 |
25 | //得到图片的data |
26 | NSData* data = UIImagePNGRepresentation(image); |
27 | //http body的字符串 |
28 | NSMutableString *body=[[NSMutableString alloc]init]; |
29 | |
30 | ////添加分界线,换行 |
31 | [body appendFormat:@ "%@\r\n" ,MPboundary]; |
32 | //声明pic字段,文件名为boris.png |
33 | [body appendFormat:@ "Content-Disposition: form-data; name=\"Image\"; filename=\"boris.png\"\r\n" ]; |
34 | //声明上传文件的格式 |
35 | [body appendFormat:@ "Content-Type: image/png\r\n\r\n" ]; |
36 | |
37 | //声明结束符:--AaB03x-- |
38 | NSString *end=[[NSString alloc]initWithFormat:@ "\r\n%@" ,endMPboundary]; |
39 | //声明myRequestData,用来放入http body |
40 | NSMutableData *myRequestData=[NSMutableData data]; |
41 | //将body字符串转化为UTF8格式的二进制 |
42 | [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]]; |
43 | //将image的data加入 |
44 | [myRequestData appendData:data]; |
45 | //加入结束符--AaB03x-- |
46 | [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]]; |
47 | |
48 | //设置HTTPHeader中Content-Type的值 |
49 | NSString *content=[[NSString alloc]initWithFormat:@ "multipart/form-data; boundary=%@" ,TWITTERFON_FORM_BOUNDARY]; |
50 | //设置HTTPHeader |
51 | [request setValue:content forHTTPHeaderField:@ "Content-Type" ]; |
52 | //设置Content-Length |
53 | [request setValue:[NSString stringWithFormat:@ "%lu" , (unsigned long )[myRequestData length]] forHTTPHeaderField:@ "Content-Length" ]; |
54 | //设置http body |
55 | [request setHTTPBody:myRequestData]; |
56 | //http method |
57 | [request setHTTPMethod:@ "POST" ]; |
58 | |
59 | NSError *error; |
60 | NSData *resdata = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; |
61 | NSString *string = [[NSString alloc] initWithData:resdata encoding:NSUTF8StringEncoding]; |
62 | DLog(@ "%@" , string); |
63 | |
64 | _errMsg = @ "" ; |
65 | NSDictionary *jsonDataDict = [string JSONValue]; |
66 | NSDictionary *jsonData = [jsonDataDict objectForKey:@ "status" ]; |
67 | NSNumber *code = [jsonData objectForKey:@ "code" ]; |
68 | if ([code intValue] == -1) { |
69 | // 上传头像失败 |
70 | _errMsg = [jsonData objectForKey:@ "msg" ]; |
71 | } else { |
72 | // 上传头像成功 |
73 | NSDictionary *jsonResult = [jsonDataDict objectForKey:@ "result" ]; |
74 | NSString *avatar = [jsonResult objectForKey:@ "avatar" ]; |
75 | return avatar; |
76 | } |
77 | |
78 | return nil; |
79 |
80 | } |