使用 multer 在 Nodejs 中上传图像时出现错误

问题描述 投票:0回答:1

从“body-parser”导入bodyParser; 从“快递”进口快递; 从“猫鼬”导入猫鼬; 从“ejs”导入ejs; 从“multer”导入 multer;

const app = express(); 常量端口 = 3000;

app.set("视图引擎", "ejs"); app.use(bodyParser.urlencoded({ 扩展: true })); app.use(express.json()); app.use(express.static("public"));

图片上传

配置 Multer const 存储 = multer.diskStorage({ 目的地:(请求,文件,cb)=> { cb(null, "./上传"); }, 文件名:(请求,文件,cb)=> { cb(null, file.fieldname + "" + Date.now + "" + file.originalname); }, });

常量上传= multer({ 贮存, });

连接MongoDB数据库

mongoose.connect("mongodb://127.0.0.1:27017/restaurantDB") .then(() => { console.log("数据库创建成功"); }) .catch((错误) => { comsole.log(错误); });

const ProductSchema = new mongoose.Schema({ _ID: { 类型:数字, 要求:真实, }, 姓名: { 类型:字符串, 要求:真实, }, 描述: { 类型:字符串, 要求:真实, }, 价格: { 类型:数字, 必填:真实 }, 类型: { 类型:字符串, 必填:真实 }, 图像路径:{ 类型:字符串, 必填:真实 }

}); const Product = mongoose.model("产品", ProductSchema);

app.get("/", (req, res) => { res.render("index.ejs"); }); app.get("/about", (req, res) => { res.render("about.ejs"); });

app.get("/contact", (req, res) => { res.render("contact.ejs"); }); app.get("/pizza", (req, res) => { res.render("pizza.ejs"); }); app.get("/burgur", (req, res) => { res.render("burgur.ejs"); }); app.get("/饮料", (req, res) => { res.render("饮料.ejs"); }); app.get("/addproduct", (req, res) => { res.render("addproduct.ejs"); });

app.get("/product", (req, res) => { res.render("product.ejs"); });

app.post("/addproduct", upload.single("图片"), (req, res) => { const id = req.body["id"]; const name = req.body["name"]; const 描述 = req.body["描述"]; const 价格 = req.body["价格"]; const type = req.body["type"]; const 文件 = req.file;

if (!file) { 处理文件上传错误 return res.status(400).send("文件上传失败"); }

常量产品 = 新产品({ _id: id, 姓名: 姓名, 描述:描述, 价格: 价格, 类型: 类型, 图片路径:

/uploads/${file.originalname}
});

产品.save(); res.redirect("/产品")

});

app.listen(端口, () => { 控制台.log(

Server is running on port ${port}
); });

这是我的代码并收到此错误 类型错误:无法读取未定义的属性(读取“图像”) 请更正此代码并解释为什么会发生这种情况

node.js mongodb express multer body-parser
1个回答
0
投票

diskStorage 是一个类,所以

const storage = new multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, "./uploads");
    }, filename: (req, file, cb) => {
        cb(null, file.fieldname + "" + Date.now + "" + file.originalname);
    },
});

当您提出任何问题时,请格式化代码,并提供所有必要的详细信息

© www.soinside.com 2019 - 2024. All rights reserved.