我使用数组添加或删除要上传的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);
}
答案 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]);
}