Когда HTML-форма содержит <input type="file">
, мне нужно указать атрибут enctype="multipart/form-data"
в форме. Однако, когда я отправляю двоичный файл через XMLHttpRequest
, мне не нужно нигде указывать этот тип:
var builder = new BlobBuilder();
builder.append("Hello world!");
var blob = builder.getBlob("text/plain");
var oReq = new XMLHttpRequest();
oReq.open("POST", url, true);
oReq.send(blob);
Почему так?
1 ответ
С помощью формы вы сообщаете браузеру, как отформатировать данные для отправки на сервер. (Значение по умолчанию для enctype
не поддерживает файлы).
С XHR вы сами форматируете данные. (Тем не менее, вам следует по-прежнему использовать addHeader
для указания подходящего типа содержимого для вашего тела POST).
oReq.setRequestHeader("content-type", "application/zip")
- если я передаю заархивированный архив, правильно?
oReq.send("text here")
, он будет выглядеть в теле запроса, как если бы использовалось шифрование text/plain
?
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
BlobBuilder
не рекомендуется использовать в течение некоторого времени, используйте вместо негоvar blob = new Blob(['Hello world!'], {type: 'text/plain'});
.