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]
但没有奏效。
你必须得到的文件长度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/>';
}
去与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
}
你只需要使用fileToUpload[]
而不是fileToUpload
:
fd.append("fileToUpload[]", document.getElementById('fileToUpload').files[0]);
它会返回一个数组有多个名称,大小等...
这工作得很好!
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);
}
});
这为我工作:
let formData = new FormData()
formData.append('files', file1)
formData.append('files', file2)