2012-01-21 62 views
0

我已經通過POST有問題文件上載到服務器編碼問題apending NSData的發佈與

我通過加載HTML文件,插入數據建立請求主體:

------WebKitFormBoundaryMAsmIFCr12izlsoH 
Content-Disposition: form-data; name="token" 

%@ 
------WebKitFormBoundaryMAsmIFCr12izlsoH 
Content-Disposition: form-data; name="userfile"; filename="%@" 
Content-Type: AES256/encrypted 

%@ 
------WebKitFormBoundaryMAsmIFCr12izlsoH-- 
Content-Disposition: form-data; name="submit" 

Datei absenden 
------WebKitFormBoundaryMAsmIFCr12izlsoH-- 

但插入數據fia字符串與格式,它必須是一個字符串。所以我分配initWithData:數據編碼NSASCIIStringEncoding導致數據無法以UTF8顯示。其餘的請求是UTF8,所以之後如果需要dataUsingEncoding:NSUTF8StringEncoding。這打破了數據。在錯誤的地方有一些字節等等。所以我嘗試了另一種方式,我將html分成兩部分,並製作了一個三明治。 html,data,html不幸的是,請求現在看起來像第二個html是文件的一部分,所以文件再次被破壞。 你知道更好的方法嗎? 在此先感謝, Jannes

回答

0

我認爲嘗試使用stringWithFormat是根本上有缺陷。 NSString在概念上是一組Unicode數據,但您試圖放在一起的數據可能不是有效的Unicode。

您最好將不同的標題部分轉換爲NSData實例,然後將這些部分與要發送的數據連接起來。

+0

感謝您的回答。 anser是:你需要在你的數據和html的其餘部分之間換行。像這樣:NSString * break = @「\ n」; NSData * breakData = [break dataUsingEncoding:NSUTF8StringEncoding]; [postbody appendData:fileData]; [postbody appendData:breakData]; – Elefantosque