Multer 只读未定义

Multer Only Reading Undefined

我这辈子都无法使 multer 的文件上传正常工作。我已经阅读了数十个教程,遵循了 YT 指南,并搜索了数十个 Whosebug 问题,但无法通过 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;

这不是文件大小问题,因为文件大小为 46KB。当我 console.log(req.file) 时我得到未定义,但当我这样做时我得到完整的数据详细信息:console.log(req.files)。在 Postman 中,它只是 returns json 错误,就好像文件甚至没有被 multer 读取一样。 在邮递员中,我正确地使用表单数据到 POST 路由,文件字段名称是:图像,就像我在 POST 路由中声明的那样。

我解决了! Express-fileupload 是问题所在。当你在文件中使用 express-fileupload 时,它保留 req.file。因此 Multer 中间件无法访问它。通过删除它,我能够修复它并正确上传它。