Разве MIME-типы, такие как изображения или файлы PDF, не должны быть base64 или иным образом кодированы?

Разве MIME-типы, такие как изображения или PDF-файлы, не должны быть base64 или иным образом кодированы, если они хотят отправить их или загрузить по HTTP, поскольку они могут содержать управляющие символы?

Разве двоичные данные не должны отделяться от текстовых данных или я мог бы даже передать текстовый файл в виде двоичных данных (application/octet-stream) и позволить принимающему приложению решить, как с ним обращаться?

1 ответ

Решение

HTTP-запрос не требует никакой кодировки передачи. Правильно построенный HTTP-запрос POST с multipart/form-data будет включать в себя Content-Type для каждого раздела через каждую границу. Не нужно думать об этом как сообщение MIME. Сервер / приложение, которому адресован этот HTTP-запрос, будет обрабатывать каждый граничный контент в соответствии с заголовками контента и, в частности, Content-Type, Небольшой пример полезной нагрузки HTTP POST может выглядеть так...

POST /my_page HTTP/1.1
Content-Type: multipart/form-data; boundary=MNZ2WM28FYlZX3miY-6E9iytpT0UfW-uzlOvF

--MNZ2WM28FYlZX3miY-6E9iytpT0UfW-uzlOvF
Content-Disposition: form-data; name="field1"

content of this input field
--MNZ2WM28FYlZX3miY-6E9iytpT0UfW-uzlOvF
Content-Disposition: form-data; name="html_content"

<p><em>Dear customer</em>,</p>
<p>Please review the attached.</p>
--MNZ2WM28FYlZX3miY-6E9iytpT0UfW-uzlOvF
Content-Disposition: form-data; name="file0"; filename="sample.txt"
Content-Type: text/plain

Plain text file content.
--MNZ2WM28FYlZX3miY-6E9iytpT0UfW-uzlOvF
Content-Disposition: form-data; name="file1"; filename="sample.docx"
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document

PK     ! ߤÒlZ      [Content_Types].xml ¢(  
l"%3÷Þ3VƃÑÚšl  µw%ë=–“^i7+Ù×ä-d&á”0ÞAÉ6€l4¼½L60#µÃ’ÍS
Oœ£œƒXø Ž*•V$z3„ü3à÷½Þ—Þ%p)Oµ^ “²×5}nH"dÙsÓXg•L„
    Á  8    
--MNZ2WM28FYlZX3miY-6E9iytpT0UfW-uzlOvF--
Другие вопросы по тегам