Заголовок XMLHttpRequest: декодировать двоичные данные по прибытии на сервер
Я строю httprequest multipart/form-data, используя объект XMLHttpRequest Javascript. Вот заголовки:
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Content-Length: 38539
Content-Type: multipart/form-data; charset=UTF-8; boundary=CONTENT_BOUNDARY
Cookie: __utma=111872281.167592067.1396133699.1396133699.1396133699.1; PHPSESSID=ea7cfjgi8e29v1bhnrj580vbc2
DNT: 1
Host: localhost:90
Referer: localhost:90/my_secret_referer/no_peeking.php
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Я отправляю запрос в PHP-документ.
В следующем фрагменте можно увидеть часть тела запроса. Он детализирует передачу двоичных данных в base64, представляющих файл изображения, который был выбран.
--CONTENT_BOUNDARY
Content-Disposition: form-data; name="images[]"; filename="airplane.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
.../9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDABkRExYTEBkWFBYcGxkeJT4pJSIiJUw3Oi0...
Эта часть тела взаимодействует со всем запросом, чтобы создать успешный запрос AJAX на мой сервер. Когда информация поступает на сервер, я декодирую ее и делаю с ней все, что могу.
Сегмент этого процесса, которым я недоволен, - это ручное декодирование двоичных данных. Всегда можно получать загруженные изображения на сервер в виде полных, разборчивых файлов изображений, используя jQuery $.ajax() или Malsup jQuery Form. Я изучил формат двух упомянутых запросов и обнаружил, что они тоже отправляют двоичную информацию, используя запрос multipart/form-data. Единственное различие, которое я обнаружил и которое намеренно не сделал, заключается в том, что мой запрос
charset: utf8;
спецификация внутри Content-Type после отправки.
Могу ли я, и если могу, как я могу сказать серверу декодировать полученную двоичную информацию?