[英]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。
可以對每個部分進行編碼,並對“內容傳輸編碼”頭部進行編碼
如果該部分的值不符合默認值,則提供
編碼。
第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.