javascript - 如何使用 vue.js 和 multer 上传多个文件?
问题描述
我可以使用 multer 上传单个文件。但是当涉及到多个文件时,它将不再起作用,并且 multer 没有文件被捕获。
我通过 formData.append() 发送文件。但它只上传单个文件
Vue component
const formData = new FormData();
formData.append("productImg", this.imgFile);
this.$store.dispatch(POST_PRODUCT_IMAGE, formData)
.then((response) => {
console.log(response.data);
})
.catch(error => {
console.log(error);
})
Server file
const uploadPath = path.join(__dirname, '/../../public/uploads');
var storage = multer.diskStorage({
destination: (req, file, callback) => {
callback(null, uploadPath + "/garbage/productImg");
},
filename: (req, file, callback) => {
var newName = Date.now() + "_" + file.originalname;
callback(null, newName);
}
});
const upload = multer({
storage: storage
});
productRouter.post('/uploadProductImage', upload.any(), async (req, res) => { // Some Code })
我也做过
productRouter.post('/uploadProductImage', array('productImg[]', 6), async (req, res) => { // Some Code })
我想一次将多个文件上传到我指定的文件夹。
解决方案
最后我找到了一个非常愚蠢的解决方案。
在 Vue 组件文件中,我只是在添加 formData 之前使用了一个循环。像这样。
Vue 组件
const formData = new FormData();
// formData.append("productImg", this.imgFile); // OLD ONE
for (let index = 0; index < this.imgFile.length; index++) { //NEW ONE
let file = this.imgFile[index];
formData.append("productImg["+index+"]", file);
}
this.$store.dispatch(POST_PRODUCT_IMAGE, formData)
.then((response) => {
console.log(response.data);
})
.catch(error => {
console.log(error);
})
推荐阅读
- vb.net - If Condition 中的拆分字符串不显示所有拆分值。VB.NET
- r - 用标点符号解析字符串,在r中的一个大列表中的不均匀行中
- android - 单击立即尝试按钮时即时应用程序崩溃
- android - 添加 Barcode_Scan 包后 Flutter 应用程序无法构建
- c - 我删除结构条目的代码没有删除,我不知道为什么
- php - 在 Laravel 中显示类别、子类别和子类别时出错
- wordpress - .htaccess 网站的 WordPress 问题转到示例域
- css - HTML如何增加
- php - Laravel Eloquent Relation 在 ajax 中显示未定义
- javascript - document.querySelector 获取包含括号的类名