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 中间件无法访问它。通过删除它,我能够修复它并正确上传它。
我这辈子都无法使 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 中间件无法访问它。通过删除它,我能够修复它并正确上传它。