javascript - Multer 只读未定义

标签 javascript express multer

我这辈子都无法使 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 错误,就好像文件甚至没有被 multer 读取一样。 在 postman 中,我正确地使用表单数据到 POST 路由,文件字段名称是:图像,就像我在 POST 路由中声明的那样。

最佳答案

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

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

相关文章:

javascript - 多色输入框

javascript - 创建 Angularjs 指令而不是 jQuery 重函数

postgresql - 收到以下错误 : "SequelizeDatabaseError column "createdAt"does not exist"

node.js - 给定图像的本地相对 url,如何获取要发送的实际图像

express - 如果在Express-Validator中间件之前使用multer作为中间件功能,则存在Multer(Express)处理错误

Javascript 函数作用域概念

JavaScript 不比较传递的参数值

html - 包含 CSP 随机数的服务器端呈现页面的 ETag

node.js - 尝试创建新用户

node.js - 无法使用 Multer S3 NodeJ 将大文件上传到 AWS