node.js - 希望使用 express-fileupload 上传多张图片
问题描述
希望上传多个图像我可以像在代码中一样单独完成,但现在我希望所有图库图像都在一个输入中发送并支持多个上传而不限制数字这是我的代码。
router.post('/add-product', isAdmin, function (req, res, next) {
console.log(req.files);
errorMsg = req.flash('error')[0];
successMsg = req.flash('success')[0];
var imageFile, imageFile1, imageFile2, imageFile3;
if (!req.files) {
res.send('No files were uploaded.');
return;
}
imageFile = req.files.imageFile;
imageFile1 = req.files.imageFile1;
imageFile2 = req.files.imageFile2;
imageFile3 = req.files.imageFile3;
imageFile.mv('public/images/' + req.user._id + req.body.code + req.body.name + '.png', function (err) {
if (err) {
res.status(500).send(err);
}
});
imageFile1.mv('public/images/' + req.user._id + req.body.code + req.body.name + 'g1' + '.png', function (err) {
if (err) {
res.status(500).send(err);
}
});
imageFile2.mv('public/images/' + req.user._id + req.body.code + req.body.name + 'g2' + '.png', function (err) {
if (err) {
res.status(500).send(err);
}
});
imageFile3.mv('public/images/' + req.user._id + req.body.code + req.body.name + 'g3' + '.png', function (err) {
if (err) {
res.status(500).send(err);
}
});
product = new Product({
name: req.body.name,
code: req.body.code,
Wifi: req.body.Wifi,
campfire: req.body.campfire,
Pool: req.body.Pool,
parking: req.body.parking,
title: req.body.title,
Duration: req.body.Duration,
Product_Group: req.body.Product_Group,
price: parseFloat((req.body.price * 100).toFixed(2)),
description: req.body.description,
shippable: req.body.shippable,
taxable: req.body.taxable,
category: req.body.category,
Longitude: req.body.Longitude,
Latitude: req.body.Latitude,
imagePath: '/images/' + req.user._id + req.body.code + req.body.name + '.png',
imagePathg1: '/images/' + req.user._id + req.body.code + req.body.name + 'g1' + '.png',
imagePathg2: '/images/' + req.user._id + req.body.code + req.body.name + 'g2' + '.png',
imagePathg3: '/images/' + req.user._id + req.body.code + req.body.name + 'g3' + '.png',
});
console.log(product);
product.save(function (err) {
if (err) {
req.flash('error', 'Error: ' + err.message);
return res.redirect('/admin/products');
}
//console.log("product: " + product);
return res.redirect('/admin/products');
});
});
前面部分与下面的代码 html 部分相同,对于不同的图像有不同的输入,但现在希望为同一个输入进行多个输入,支持该功能的节点模块是 express-fileupload
<div class="form-group">
<ul class="list-group">
<li class="list-group-item">
<label for='imageFile'>Display Image</label>
<input type='file' name='imageFile' class='form-control'>
</li>
</ul>
</div>
<div class="form-group">
<ul class="list-group">
<li class="list-group-item">
<label for='imageFile1'>Gallery1</label>
<input type='file' name='imageFile1' class='form-control'>
</li>
</ul>
</div>
<div class="form-group">
<ul class="list-group">
<li class="list-group-item">
<label for='imageFile2'>Gallery2</label>
<input type='file' name='imageFile2' class='form-control'>
</li>
</ul>
</div>
<div class="form-group">
<ul class="list-group">
<li class="list-group-item">
<label for='imageFile3'>Gallery3</label>
<input type='file' name='imageFile3' class='form-control'>
</li>
</ul>
</div>
解决方案
你可以做这样的事情
if(req.files){
const file = req.files.filename;
for(let i = 0 ; i < file.length; i++){
file[i].mv('./upload/'+file[i].name, function (err){
if(err){
res.send(err);
}
})
}
res.send('files uploaded);
}
确保将上传目录更改为您的目录
推荐阅读
- android - 从 localhost 访问数据。在android中工作,但不在网络浏览器中
- ios - Where to put sqlite .db files in iOS project?
- python - 从整个数据框中提取单元格中的字符串
- android - 将信箱模糊应用于 android 相机预览
- youtube-api - 使用 youtube API 从一些 Youtube 频道获取最新视频
- visual-studio - 如何在visual studio 2019上使用winapi创建打开文件资源管理器的按钮
- python - 如何将 pandas 数据帧发送到 flask_restful api?
- twitter - 为什么 tweepy api.search 使用 result_type="popular" 时每页最多只返回 15 条推文?
- sql - 使用窗口函数和过滤器将 1 个特定值返回到所有行
- linux - golang 默认选择哪个加载器