我想使用multipart/form-data
类型的POST
请求上传多个文件,并且对于每个文件,我需要在服务器端知道文件大小(content-length)。
为了构建javascript
中的POST
请求,我使用FormData
对象并将要上传的File对象附加到其中。这很好用,但是每个部分仅添加了Content-type
标头,除了Content-Disposition
标头外,没有添加Content-length
标头,尽管此信息可以从单个File对象获取。
是否有一种方法可以在发送请求时从FormData
对象设置每个部分的Content-length
标头?
下面是我使用的代码,包括解决问题的工作方式。实际上,它使用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(.....