【发布时间】:2019-11-20 21:45:20
【问题描述】:
我正在使用带有 multer 的 nodejs 创建一个上传到我的 shopDB mongo DB 的图像文件 当我上传图像文件并从表单发布数据时......表单中的所有内容都保存在数据库中,但图像名称显示为空,并且图像未存储在文件路径中
保存表单数据时,我在控制台中没有出现错误 除了文件上传之外,该应用程序运行良好
这就是表单内的上传方式
<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('/', (req, res) => {
res.render('index');
});
app.get('/editor', (req, res) => {
res.render('editor');
});
app.listen(3000, function(){
console.log("Server on 3000");
})
【问题讨论】:
-
你的
req.file肯定会得到undefined的值,这就是为什么它只将第二个参数作为真实的结果null作为你的文件地址。你确定你的uploadPath是对的吗?
标签: javascript node.js mongodb mongoose multer