上传使用FORMDATA多个文件()(Uploading multiple files using

2019-06-18 13:59发布

var fd = new FormData();
fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.open("POST", "uph.php");
xhr.send(fd);

uph.php:

var_dump($_FILES['fileToUpload']);

这工作,但显然对于files[0]只。 如何得到这个工作对所选文件?

我试图消除[0]但没有奏效。

Answer 1:

你必须得到的文件长度JS追加,然后通过AJAX请求如下发送

//JavaScript 
var ins = document.getElementById('fileToUpload').files.length;
for (var x = 0; x < ins; x++) {
    fd.append("fileToUpload[]", document.getElementById('fileToUpload').files[x]);
}

//PHP
$count = count($_FILES['fileToUpload']['name']);
for ($i = 0; $i < $count; $i++) {
    echo 'Name: '.$_FILES['fileToUpload']['name'][$i].'<br/>';
}


Answer 2:

去与JavaScript的方式:

var data = new FormData();

$.each($("input[type='file']")[0].files, function(i, file) {
    data.append('file', file);
});

$.ajax({
    type: 'POST',
    url: '/your/url',
    cache: false,
    contentType: false,
    processData: false,
    data : data,
    success: function(result){
        console.log(result);
    },
    error: function(err){
        console.log(err);
    }
})

如果调用data.append(“文件”,文件)多次您的请求将包含文件的数组。

我如何使用Node.js和多处理器中间件multer得到数据如下:

router.post('/trip/save', upload.array('file', 10), function(req, res){
    // Your array of files is in req.files
}


Answer 3:

你只需要使用fileToUpload[]而不是fileToUpload

fd.append("fileToUpload[]", document.getElementById('fileToUpload').files[0]);

它会返回一个数组有多个名称,大小等...



Answer 4:

这工作得很好!

var fd = new FormData();

$('input[type="file"]').on('change', function (e) {
    [].forEach.call(this.files, function (file) {
        fd.append('filename[]', file);
    });
});

$.ajax({
    url: '/url/to/post/on',
    method: 'post',
    data: fd,
    contentType: false,
    processData: false,
    success: function (response) {
        console.log(response)
    },
    error: function (err) {
        console.log(err);
    }
});


Answer 5:

这为我工作:

let formData = new FormData()
formData.append('files', file1)
formData.append('files', file2)


文章来源: Uploading multiple files using formData()