我正在使用node js制作api来上传文件。
我使用万用表作为手柄
multipart/form-data
但是当我console.log(req.file)
时,它看起来是未定义的
路线
const uploadController = require('../controller/upload.server.controller');
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
/**
* Routes
*/
module.exports = function (app) {
app
.route('/api/upload')
.post(upload.single('image'), uploadController.upload);
};
控制器
exports.upload = async function (req, res) {
console.log(req.file);
};
我对邮递员的要求
// init
const multer = require('multer');
const path = require('path');
// "images" are the folder name
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'images');
},
});
// put this to config the multer
app.use(multer({ storage: fileStorage }).single('image'));
// this is for serving file staticly with "path" module
app.use('/images', express.static(path.join(__dirname, 'images')));
还要确保您在
enctype=multipart/form-data
标签中写入 form
,而不是在 input
标签中并且
在 type=file
标签中添加 input
属性
试试这个:
app.post('/api/upload', upload.single('image'), function (req, res, next) {
console.log(req.file);
})
我也遇到过类似的问题。每次我重新启动服务器邮递员提供的 req.file 都给出未定义。我想也许我犯了一个错误,但我不知道出了什么问题。
然后我尝试在邮递员中创建一个新请求,当我请求 req.file 时效果很好。我正在尝试找出 Postman 出了什么问题,还是我在发送请求时犯了错误。
我碰巧重新启动了邮递员,显然这损坏了我发送的文件。我浪费了生命中的 1 个小时,我再也回不来了......
更改文件可以工作:D
您应该检查标头设置以确保“Content-Type”设置为“multipart/form-data”并包含“boundary”。
如果应用程序在网络浏览器中运行,浏览器将自动设置这些标头。
我读了类似this的问题。