Я хотел бы загрузить несколько файлов, используя запрос на отправку типа multipart/form-data
, и для каждого файла мне нужно знать размер файла (длина содержимого) на на стороне сервера.Задать заголовок длины контента для отдельных частей многостраничной загрузки/данных формы.
Чтобы построить запрос POST
в javascript
, я использую объект FormData
и добавляю объекты File для его загрузки. Это отлично работает, но только заголовок Content-type
добавляется к каждой части в дополнение к заголовку Content-Disposition
, но нет заголовка Content-length
, хотя эта информация доступна из отдельных объектов File.
Есть ли способ достичь того, что заголовки Content-length
установлены для каждой части от объекта FormData
при отправке запроса?
Ниже приведен код, который я использую, включая проблему с моей работой. Он действительно использует angular-js
, чтобы отправить запрос, но я думаю, что это не относится к вопросу.
var form = new window.FormData();
form.append('additional-field-1', new Blob(['some plain text'], {type : 'text/plain'}));
for (var file in fileList) {
var fileObj = fileList[file];
var count = 1 + parseInt(file, null);
form.append('file-size-' + count, new Blob([fileObj.size], {type : 'text/plain'}));
form.append('file-' + count, fileObj);
}
$http.post(url, form, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
}).success(.....
Добавил щедрость к этому, также и боль для меня. – James
Я собирался использовать угловую форму для запроса xD –
Не могли бы вы объяснить, зачем это нужно? Обычно код на стороне сервера определяет размер каждой «части» в многочастных данных, ища разделитель границ, разбор заголовков и т. Д. - все, что осталось, - это данные. Вам нужно знать размер каждой части * до того, как вы разобрали тело каждой «части» по какой-то причине? – sheltond