我一生无法获得multer的文件上传功能。我已经阅读了许多教程,遵循了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;


这不是文件大小的问题,因为文件大小为46KB。我在console.log(req.file)时未定义,但在执行时却获得了完整的数据详细信息:console.log(req.files)。在Postman中,它仅返回json错误,就好像穆特甚至没有读取文件一样。
在邮递员中,我正确地将表单数据用于POST路由,并且文件字段名称是:image,就像我在POST路由中所述。

最佳答案

我解决了! Express-fileupload是问题所在。当您在文件中使用express-fileupload时,它将保留req.file。因此,穆特中间件无法访问它。通过删除它,我可以对其进行修复并正确上传。

关于javascript - 穆特仅读取未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58383437/

10-16 20:51