Загруженные изображения не отправляются в папку - PullRequest
0 голосов
/ 06 февраля 2020

My req.files.foo.mv (express-fileupload) не перемещает файлы изображений в папку public/img. Анализатор тела передает имя изображения и путь к нему на страницу моего сообщения (E JS <%= 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 голосов
/ 09 апреля 2020
  • Попробуйте последнюю версию express -fileupload (1.1.6 или более позднюю).
  • Установите параметр createParentPath: true, чтобы создать каталог для загрузки, если он не существует.
  • Установите опцию debug: true и проверьте на выходе, что происходит во время загрузки и перемещения.
0 голосов
/ 06 февраля 2020

Я не пробовал express -fileupload, но я уверен, что multer может это сделать. https://www.npmjs.com/package/multer

...