Multer 给出 req.file 未定义

问题描述 投票:0回答:6

我正在使用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);
};

我对邮递员的要求

request with postman

javascript node.js file-upload multer
6个回答
0
投票

尝试根据文档来源使用

req.file
multer


0
投票
// 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
属性


0
投票

试试这个:

app.post('/api/upload', upload.single('image'), function (req, res, next) {
  console.log(req.file);
})

0
投票

我也遇到过类似的问题。每次我重新启动服务器邮递员提供的 req.file 都给出未定义。我想也许我犯了一个错误,但我不知道出了什么问题。

然后我尝试在邮递员中创建一个新请求,当我请求 req.file 时效果很好。我正在尝试找出 Postman 出了什么问题,还是我在发送请求时犯了错误。


0
投票

我碰巧重新启动了邮递员,显然这损坏了我发送的文件。我浪费了生命中的 1 个小时,我再也回不来了......

更改文件可以工作:D


0
投票

您应该检查标头设置以确保“Content-Type”设置为“multipart/form-data”并包含“boundary”。

如果应用程序在网络浏览器中运行,浏览器将自动设置这些标头。

我读了类似this的问题。

© www.soinside.com 2019 - 2024. All rights reserved.