HTML5 File API readAsBinaryString读取的文件比磁盘上的文件大得多且与之不同

如果您以二进制字符串形式读取文件并手动形成multipart / form-data请求,则可能会发生这种情况。

您需要尝试使用xhr.send(File)并解决xhr progress事件,该事件在所有列表项都已创建后就会触发。

示例

以下是我们的上传功能-

function display(url, files) {
   var myForm = new FormData();
   for (var j = 0, file; file = files[j]; ++j) {
      myForm.append(file.name, file);
   }
   var xhr = new XMLHttpRequest();
   xhr.open('POST', url, true);
   xhr.onload = function(e) { ... };
   xhr.send(formData);
}