Multer Only Read Undefined - PullRequest
       23

Multer Only Read Undefined

1 голос
/ 14 октября 2019

Я не могу на всю жизнь заставить работать загрузку файлов Малтера. Я прочитал десятки учебных пособий, следовал инструкциям YT и изучил десятки вопросов StackOverflow, но не могу заставить эту штуку работать через Postman.

Это страница маршрута с маршрутом /image-upload.

Вот полный код:

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const passport = require('passport');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const multer = require('multer');

const fileUpload = require('express-fileupload');

let path = require('path');


var storage = multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, __dirname + '../uploads')
    },
    filename: (req, file, cb) => {
      cb(null, file.fieldname + '-' + Date.now())
    }
});

var upload = multer({storage: storage});

router.post('/', upload.single('image'), (req, res, next) => {
    let file = req.file;
    console.log(req.file);
    console.log(req.files);
    if (!file) {
        return res.json({nofile: 'please upload a file'})
    }
})

module.exports = router;

Это не проблема размера файла, так какразмер файла составляет 46 КБ. При получении console.log (req.file) я получаю неопределенное значение, но при этом получаю полную информацию: console.log (req.files). В Postman он просто возвращает ошибку json, как будто файл даже не читается с помощью multer. В почтальоне я правильно использую данные формы для маршрута POST, а имя поля файла: image, как я заявляю в маршруте POST.

1 Ответ

1 голос
/ 15 октября 2019

Я решил это! Экспресс-загрузка файла была проблемой. Когда вы используете в файле express-fileupload, он резервирует req.file. Поэтому промежуточное программное обеспечение Multer не может получить к нему доступ. Удалив его, я смог исправить и загрузить его правильно.

...