我正在尝试使用 Multer 将 3 张图像上传到数据库,我想将 image1 保存在 proImg 中,将 image2 保存在 proImg2 中,将 image3 保存在 proImg3 中。因此,每个产品将在网站上显示三张图片。那么如何使用 Node 和 Multer 将多个文件上传到 MongoDB?
产品.js
const mongoose = require("mongoose")
const productSchema = new mngoose.Schema({
description: {
type: String,
required: true
},
proImg: {
type: String,
required: true
},
proImg1: {
type: String,
required: true
},
proImg2: {
type: String,
required: true
},
})
let Product = mngoose.model('Product', productSchema, 'products');
module.exports = Product;
管理员路由.js
const multer = require("multer")
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/imgs')
},
filename: function (req, file, cb) {
cb(null, file.originalname + '-' + Date.now() + '.png' )
}
})
var upload = multer({ storage: storage,
limits: {
fieldSize: 1024 * 1024 * 3,
},
});
var uploadMultiple = upload.fields([{ name: 'image', maxCount: 10 }, { name: 'image2', maxCount: 10 } ,
{ name: 'image3', maxCount: 10 }])
router.post('/addProduct',upload.array('Images', 10), (req,res)=> {
const errors = validationResult(req)
let Pro= new Product({
title: req.body.ProName,
description: req.body.ProDes,
available_stock: req.body.ProAvStk,
price: req.body.ProPrice,
manufacturer : req.body.ProManu,
proImg: req.file.filename,
})
Pro.save((err)=>{
if(!err){
console.log("ADDED ")
}
else{
console.log("error")
.
.
addProduct.ejs
<form action="/shopAdmin/addProduct" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="image">Upload File 1:</label>
<input type="file" name="Images" id="image" required class="form-control">
</div>
<div class="form-group">
<label for="image2">Upload File 2:</label>
<input type="file" name="Images" id="image2" required class="form-control">
</div>
<div class="form-group">
<label for="image3">Upload File 3:</label>
<input type="file" name="Images" id="image3" required class="form-control">
</div>
<div class="mt-2 form-group" >
<button type="submit" class="btn btn-primary">Create</button>
</div>
</form>