上传的图像不会发送到文件夹

时间:2020-02-06 17:45:10

标签: express file-upload body-parser

我的req.files.foo.mvexpress-fileupload)没有将图像文件移动到public/img文件夹中。正文解析器正在将图像名称和图像路径传递到我的帖子页面(EJS <%= blogpost.image %>),但是图像未发送到public/img文件夹中。

// index.js 
const express = require('express')
const path = require('path')
const ejs = require('ejs')
const mongoose = require('mongoose')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')
const BlogPost = require('./models/BlogPost')
const expressSession = require('express-session')
const flash = require('connect-flash')
const app = new express()

mongoose.connect('mongodb://localhost/my_database', {useNewUrlParser:true})
app.set('view engine', 'ejs')
app.use(express.static('public'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))
app.use(fileUpload())
app.use(expressSession({secret:'keyboard cat'}))  
global.loggedIn = null
app.use("*", (req, res, next) =>{
    loggedIn = req.session.userId
    next()
});
app.use(flash()); 
const storeUserController = require('./controllers/storeUser')
app.post('/posts/store', authMiddleware, storePostsController)

// post store controller
const BlogPost = require('../models/BlogPost')
const path = require('path')
module.exports = (req,res) => {
    let image = req.files.image
    image.mv(path.resolve (__dirname, 'public/img', image.name), async (error) => {
       await BlogPost.create({
         ...req.body, 
         image:'/img/' + image.name
       })
       res.redirect('/')
    })
}

2 个答案:

答案 0 :(得分:0)

我还没有尝试过express-fileupload,但是我确信multer可以做到这一点。 https://www.npmjs.com/package/multer

答案 1 :(得分:0)

  • 尝试使用最新版本的express-fileupload(1.1.6或更高版本)。
  • 设置选项createParentPath:true,以创建用于上载的目录(如果不存在)。
  • 设置选项调试:true,并检查输出在上载和移动期间发生了什么。
相关问题