Multer未将文件存储到文件夹,并且在mongoDB中显示为空

我正在使用带有multer的nodejs来创建上传到我的shopDB mongo DB的图像文件 当我上传图像文件并从表单中发布数据时...表单中的所有内容都保存在数据库中,但是imagename显示为空,并且图像未存储在文件路径中

保存表单数据时控制台中没有出现任何错误 除文件上传外,该应用程序运行正常

这就是表单中的上传方式

<div id="img">                                
<input type='file' name="uploadpostfile">
</div> 

这是我的APP.JS

  const express = require("express");
    const router = express.Router();
    const multer = require('multer');
    const path = require("path");
    const Post = require('./models/postup');
    const uploadPath = path.join("public",Post.postImgPath);
    const bodyParser = require("body-parser");
    const imageMimeTypes = ["images/jpeg","images/png","images/gif"]

const upload = multer({
    dest: uploadPath,fileFilter: (req,file,callback) => {
        callback(null,imageMimeTypes.includes(file.mimetype) )
    }
   })
const request = require("request");
const ejs = require("ejs");
require('./models/postup')
const mongoose = require("mongoose");


mongoose.connect("mongodb://localhost:27017/shopDB");
const db = mongoose.connection
db.on('error',error => console.error(error))
db.once('open',() => console.log('Connected to Mongoose',{useNewUrlParser: true},{ useUnifiedTopology: true}))


const app = express();


app.set('view engine','ejs');
app.use(express.static("public"));
app.use(bodyParser.urlencoded({
    extended:true
}));
app.use(bodyParser.json());



app.post("/npost",multer(upload).single("uploadpostfile"),(req,res) => {
    let fileName = req.file != null ? req.file.filename : null
    let post = new Post({
         tag: req.body.taginput,title: req.body.posttitle,link: req.body.extlink,text1: req.body.textsmall,text2: req.body.textmedium,text3: req.body.textlarge,imgname: fileName 
    })



    post.save((err,doc) => {
        if (!err)    
            res.redirect('editor');
        else {
            console.log('Error' +err )
        }
    })

})



app.get('/',res) => {
    res.render('index');
  });

app.get('/editor',res) => {
    res.render('editor');
});

app.listen(3000,function(){
    console.log("Server on 3000");
})
zhanjial 回答:Multer未将文件存储到文件夹,并且在mongoDB中显示为空

You can try after saving a post,update the image.

const express = require("express");
    const router = express.Router();
    const multer = require('multer');
    const path = require("path");
    const Post = require('./models/postup');
    const uploadPath = path.join("public",Post.postImgPath);
    const bodyParser = require("body-parser");
    const imageMimeTypes = ["images/jpeg","images/png","images/gif"]

const upload = multer({
    dest: uploadPath,fileFilter: (req,file,callback) => {
        callback(null,imageMimeTypes.includes(file.mimetype) )
    }
   })
const request = require("request");
const ejs = require("ejs");
require('./models/postup')
const mongoose = require("mongoose");


mongoose.connect("mongodb://localhost:27017/shopDB");
const db = mongoose.connection
db.on('error',error => console.error(error))
db.once('open',() => console.log('Connected to Mongoose',{useNewUrlParser: true},{ useUnifiedTopology: true}))


const app = express();


app.set('view engine','ejs');
app.use(express.static("public"));
app.use(bodyParser.urlencoded({
    extended:true
}));
app.use(bodyParser.json());



app.post("/npost",multer(upload).single("uploadpostfile"),(req,res) => {
    let fileName = req.file != null ? req.file.filename : null
    let post = new Post({
         tag: req.body.taginput,title: req.body.posttitle,link: req.body.extlink,text1: req.body.textsmall,text2: req.body.textmedium,text3: req.body.textlarge,})



    post.save((err,doc) => {
        if (!err)    
            res.redirect('editor');
        else {
            imgname = fileName;
                post.findOneAndUpdate({ _id: doc._id },{ $set: imgname },{ 
             upsert: true,new: true }).exec((error,post) => {
            if(error) {
            res.status(500).json({ message:'internal server error' });
            } else {
            res.status(200).json({message:'image upload sucessfully.})
            console.log('Error' +err )
        }
    })

})



app.get('/',res) => {
    res.render('index');
  });

app.get('/editor',res) => {
    res.render('editor');
});

app.listen(3000,function(){
    console.log("Server on 3000");
})
本文链接:https://www.f2er.com/3065713.html

大家都在问