Formdata无法上传多张图片

时间:2020-09-28 17:45:26

标签: javascript php html ajax

我使用数组添加或删除要上传的mutli文件, 当我想通过ajax和formdata上传文件时,它的问题不在我的php文件中,并且我无法在此处捕获上传的文件是我的上传功能。

var upload_images=[];//here where i saved files
function upload_images(){
    const fd = new FormData();
    const xhr = new XMLHttpRequest();

    fd.append('upload_images[]',upload_images[]);
    xhr.open('POST','upload.php', true);
    xhr.send(fd);

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            upload_images=[];
            let i=0;i2=upload_url.length;
            for(let i=0;i<i2;i++){URL.revokeObjectURL(upload_url[i]);}
            upload_url=[];

        }
    };

    xhr.upload.addEventListener("progress", function(e) {
        if (e.lengthComputable) {
          progress_bar.value=Math.round((e.loaded * 100) / e.total);
        }
      }, false);


}

2 个答案:

答案 0 :(得分:1)

upload_images[]访问数组的undefined属性。

如果要将数组传递给方法,请不要在末尾加上[]

但是,您不想这样做。

您要将每个文件附加到FormData:

upload_images.forEach( image =>  fd.append('upload_images[]', image) );

答案 1 :(得分:1)

您不能按原样放置数组,必须将数组中的每个文件附加到formdata中然后发送。

let x=upload_images.length;
for(let i=0;i<x;i++){
fd.append('upload_images[]',upload_images[i]);
}