javascript - 一次上传照片

标签 javascript ajax upload photo

我正在尝试使用 XMLHttpRequest 对象同时上传更多照片。

 if(files.length <= 6) {   

    for(var i = 0; i < files.length; i++)   {

      var formData = new FormData();
      formData.append('action', 'uploadPhoto');
      formData.append('photo_id', id);
      formData.append('file'+id, files[i]);
      UploadFile(formData, id);   } 

    }

 function UploadFile(formData, id)  {   

 var xhr = new XMLHttpRequest();
 xhr.open('POST', 'uploadPhoto.php', false);   
 xhr.onload = function (){};   

xhr.send(formData); }

问题是照片上传是重复的。我认为发生这种情况是因为循环继续并且照片没有完成上传。

最佳答案

根据评论,您的 id 是一个随机数,我猜它在每次迭代中都需要是随机的。然而,您已将其设置在 for 循环之外,因此它将在每个循环中被覆盖,因此您只能看到上传的一个文件。根据您使用的随机函数,您有可能再次生成相同的数字,并以与您在此处执行的相同方式随机覆盖文件。

这里我采用了时间戳技术,它在您执行操作时始终是唯一的。试试这个:

if(files.length <= 6) {   

for(var i = 0; i < files.length; i++)   {

  var id =Date().getTime();
  var formData = new FormData();
  formData.append('action', 'uploadPhoto');
  formData.append('photo_id', id);
  formData.append('file'+id, files[i]);
  UploadFile(formData, id);   } 

}
 function UploadFile(formData, id)  {   

 var xhr = new XMLHttpRequest();
 xhr.open('POST', 'uploadPhoto.php', false);   
 xhr.onload = function (){};   

xhr.send(formData); }

关于javascript - 一次上传照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636044/

相关文章:

javascript - 当 React 组件中的音频元素 src 属性发生更改并且在 linux 上重新加载窗口时,Electron 变为空白

php - 使用 AngularJS 和 PHP 将图像上传到服务器路径

PHP 上传 - 500 内部服务器错误

javascript - jQuery Knob 使用 animate 更新值

javascript - 如何保存 JavaScript 闭包的状态?

php - 了解如何使用 AJAX 在 php 中与 smarty 一起工作

javascript - jquery - ie - Ajax 请求适用于所有浏览器,但 ie - 内容类型已更改

django - 如何在表单验证错误中 "keep"上传的图像?

javascript - 图像悬停和替换 - jquery

jquery - 成功后ajax调用函数