Я хотел бы загрузить несколько файлов, используя запрос на отправку типа 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(.....