原文地址:http://www.cocoachina.com/bbs/read.php?tid=89985php
1
2
3
4
5
6
7
8
9
10
11
12
|
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name=
"field1"
Hello Boris!
--AaB03x
content-disposition: form-data; name=
"pic"
; filename=
"boris.png"
Content-Type: p_w_picpath/png
... contents of boris.png ...
--AaB03x--
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
//分界線的標識符
NSString
*TWITTERFON_FORM_BOUNDARY = @
"AaB03x"
;
//根據url初始化request
NSMutableURLRequest
* request = [
NSMutableURLRequest
requestWithURL:[
NSURL
URLWithString:url]
cachePolicy:
NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:10];
//分界線 --AaB03x
NSString
*MPboundary=[[
NSString
alloc]initWithFormat:@
"--%@"
,TWITTERFON_FORM_BOUNDARY];
//結束符 AaB03x--
NSString
*endMPboundary=[[
NSString
alloc]initWithFormat:@
"%@--"
,MPboundary];
//要上傳的圖片
UIImage *p_w_picpath=[params objectForKey:@
"pic"
];
//獲得圖片的data
NSData
* data = UIImagePNGRepresentation(p_w_picpath);
//http body的字符串
NSMutableString
*body=[[
NSMutableString
alloc]init];
//參數的集合的全部key的集合
NSArray
*keys= [params allKeys];
//遍歷keys
for
(
int
i=0;i<[keys count];i++)
{
//獲得當前key
NSString
*key=[keys objectAtIndex:i];
//若是key不是pic,說明value是字符類型,好比name:Boris
if
(![key isEqualToString:@
"pic"
])
{
//添加分界線,換行
[body appendFormat:@
"%@\r\n"
,MPboundary];
//添加字段名稱,換2行
[body appendFormat:@
"Content-Disposition: form-data; name=\"%@\"\r\n\r\n"
,key];
//添加字段的值
[body appendFormat:@
"%@\r\n"
,[params objectForKey:key]];
}
}
////添加分界線,換行
[body appendFormat:@
"%@\r\n"
,MPboundary];
//聲明pic字段,文件名爲boris.png
[body appendFormat:@
"Content-Disposition: form-data; name=\"pic\"; filename=\"boris.png\"\r\n"
];
//聲明上傳文件的格式
[body appendFormat:@
"Content-Type: p_w_picpath/png\r\n\r\n"
];
//聲明結束符:--AaB03x--
NSString
*
end
=[[
NSString
alloc]initWithFormat:@
"\r\n%@"
,endMPboundary];
//聲明myRequestData,用來放入http body
NSMutableData
*myRequestData=[
NSMutableData
data];
//將body字符串轉化爲UTF8格式的二進制
[myRequestData appendData:[body dataUsingEncoding:
NSUTF8StringEncoding
]];
//將p_w_picpath的data加入
[myRequestData appendData:data];
//加入結束符--AaB03x--
[myRequestData appendData:[
end
dataUsingEncoding:
NSUTF8StringEncoding
]];
//設置HTTPHeader中Content-Type的值
NSString
*content=[[
NSString
alloc]initWithFormat:@
"multipart/form-data; boundary=%@"
,TWITTERFON_FORM_BOUNDARY];
//設置HTTPHeader
[request setValue:content forHTTPHeaderField:@
"Content-Type"
];
//設置Content-Length
[request setValue:[
NSString
stringWithFormat:@
"%d"
, [myRequestData length]] forHTTPHeaderField:@
"Content-Length"
];
//設置http body
[request setHTTPBody:myRequestData];
//http method
[request setHTTPMethod:@
"POST"
];
//創建鏈接,設置代理
NSURLConnection
*conn = [[
NSURLConnection
alloc] initWithRequest:request delegate:
self
];
//設置接受response的data
if
(conn) {
mResponseData = [[
NSMutableData
data] retain];
}
|