Javascript Multer仅读取未定义的数据

Javascript Multer仅读取未定义的数据,javascript,express,multer,Javascript,Express,Multer,我一辈子都不能让Mutter的文件上传工作。我已经阅读了几十篇教程,遵循了YT指南,搜索了几十个StackOverflow问题,但无法通过Postman来实现 这是路由的页面,路由为/image upload 以下是完整的代码: const express = require('express'); const router = express.Router(); const mongoose = require('mongoose'); const passport = require('pa

我一辈子都不能让Mutter的文件上传工作。我已经阅读了几十篇教程,遵循了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错误,就好像文件甚至没有被multer读取一样。
在postman中,我正确地使用表单数据发送到POST路由,文件字段名为:image,就像我在POST路由中声明的那样。

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

这是您所使用的库的中间件所特有的。从
文件
而不是
文件
读取文件数据有什么问题?我认为文件应该在
文件中的某个地方。请参阅发送文件的输入的name属性。文件应该在
文件中。
嘿,德拉戈斯,谢谢你的回复!文档和教程都说使用:req.file而不是req.files。输入的名称是:像我在POST请求中所述的图像,所以我不确定它为什么不起作用。当我将其更改为req.files.image(如您所述)时,它仍然无法工作。