Content-Transfer-Encoding в запросе загрузки файла - PullRequest
7 голосов
/ 02 марта 2011

Я пытаюсь загрузить файл, используя 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

Ответы [ 2 ]

11 голосов
/ 30 марта 2011

Ответ Ксавье не звучит правильно.В RFC2616 также сказано следующее (раздел 3.7):

В общем случае HTTP обрабатывает составное тело сообщения не иначе, чем
любого другого типа носителя: строго как полезную нагрузку.Единственным исключением является
"multipart / byteranges"

Мне кажется, что в разделе 19.4 RFC2616 говорится о HTTP в целом, в том смысле, что он использует синтаксис, аналогичный MIME(как формат заголовков), но не MIME-совместимый.

Также существует RFC2388 .В последнем абзаце раздел 3 написано:

Каждая часть может быть закодирована, а заголовок "content-Transfer-Encoding"
указан, если значение этой частине соответствует кодировке
по умолчанию.

Раздел 4.3 подробно описывает это:

4.3 Кодировка

Покапротокол HTTP может транспортировать произвольные двоичные данные, по умолчанию для транспорта почты используется кодировка 7BIT.Может потребоваться кодировать значение, предоставленное для детали, и указывать заголовок «контент-передача-кодирование», если значение не соответствует кодировке по умолчанию.[Подробнее см. раздел 5 RFC 2046 .]

2 голосов
/ 02 марта 2011

Мой предыдущий ответ был неправильным

Content-Transfer-Encoding может появиться в составном теле

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

Есть несколько последствий этого.Тело сущности для составных типов МОЖЕТ содержать много частей тела, каждая из которых имеет свои собственные заголовки MIME и HTTP (включая заголовки Content-MD5, Content-Transfer-Encoding и Content-Encoding).

...