我这辈子都无法使 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/