編輯:
您正在上傳的文件數據應使用Base64進行編碼;您可以通過NSData+Base64手段做到這一點,然後使用:
[body appendData:[imageData1 base64EncodedString];
要發送的文件數據,因此我認爲imageData1
被定義爲:
NSData* imageData = UIImagePNGRepresentation(image);
和image
是UIImage
。
OLD解答:
這是從HTML 4.0.1 standard未來的例子(非常文檔的結束):
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"
Content-Type: multipart/mixed; boundary=BbC04y
--BbC04y
Content-Disposition: file; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--BbC04y
Content-Disposition: file; filename="file2.gif"
Content-Type: image/gif
Content-Transfer-Encoding: binary
...contents of file2.gif...
--BbC04y--
--AaB03x--
注意,文件都一起列在多部分/混合列表。
所以,你可以用代碼嘗試:
//-- new part in multipart/form-data
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"files\" dataUsingEncoding:NSUTF8StringEncoding]];
//-- new multipart/mixed
[body appendData:[[NSString stringWithFormat:@"multipart/mixed; boundary=%@", mixedBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: file; filename=\"%@\"\r\n", FileParamConstant1] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData1];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", mixedBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: file; filename=\"%@\"\r\n", FileParamConstant2] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData2];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
保重改變filename
和name
屬性,它應該工作。
我已經嘗試過,並使用查爾斯網絡代理檢查請求後,我看到只有第一個參數被連接。我嘗試了很多不同的方式來做到這一點,只有發送的第一個參數似乎附加到請求。我也找不到任何資源詳細說明這是否可以完成。 – jere
請看,我的編輯... – sergio
感謝您的時間塞爾吉奧,但我已經嘗試過的代碼幾乎完全一樣,因爲你張貼它。用查爾斯檢查請求我發現只有一個「文件」參數(根據規範,這似乎是正確的),但裏面沒有文件。該參數包含了一些請求的正文文本,導致我認爲某處出現了一些語法錯誤,但我找不到任何東西......也許我會放棄它,併發送兩個請求,一個nsqueue或GCD – jere