簡體   English   中英

Content-Transfer-Encoding in file upload request

[英]Content-Transfer-Encoding in file uploading request

我正在嘗試使用XMLHTTPRequest上傳文件,並發送此標頭:

Content-Type:multipart/form-data, boundary=xxxxxxxxx

--xxxxxxxxx
Content-Disposition: form-data; name='uploadfile'; filename='123_logo.jpg'
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
/*base64data*/

但是在服務器端PHP忽略標題“Content-Transfer-Encoding:base64”並將base64未解碼的數據直接寫入文件!

有什么辦法可以解決嗎?

ps使用base64發送數據非常重要

澤維爾的回答聽起來不對。 RFC2616也有這個說法(第3.7節):

通常,HTTP對多部分消息體的處理方式與此不同
任何其他媒體類型:嚴格作為有效載荷。 唯一的例外是
“多/字節范圍”

在我看來,RFC2616的第19.4節正在討論HTTP作為一個整體,在某種意義上它使用類似於MIME的語法(如頭格式),但符合MIME。

此外,還有RFC2388 第3節 ,最后一段,它說:

可以對每個部分進行編碼,並對“內容傳輸編碼”頭部進行編碼
如果該部分的值不符合默認值,則提供
編碼。

第4.3節詳細闡述了這一點:

4.3編碼

雖然HTTP協議可以傳輸任意二進制數據,但郵件傳輸的默認值是7BIT編碼。 如果值不符合默認編碼,則可能需要對為部件提供的值進行編碼並提供“content-transfer-encoding”頭。 [有關詳細信息,請參閱RFC 2046的第5節 。]

我之前的回答是錯的

Content-Transfer-Encoding可能出現在復合體中

http://www.ietf.org/rfc/rfc2616.txt

這有幾個后果。 復合類型的實體主體可以包含許多主體部分,每個主體部分都有自己的MIME和HTTP頭(包括Content-MD5,Content-Transfer-Encoding和Content-Encoding頭)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM