multer - req.file始终未定义

mla*_*amp 16 javascript node.js express multer

我已经为同样的问题看了很多答案,但我还没有找到一个有效的解决方案.我正在尝试创建一个Web应用程序,您可以使用express和multer上传文件,我遇到的问题是没有文件正在上传,并且req.file始终未定义.

我的代码如下

'use strict';

var express = require('express');
var path    = require('path');
var multer  = require('multer')
var upload  = multer({ dest: 'uploads/' })

var app = express();
require('dotenv').load();

app.use(express.static(path.join(__dirname, 'main')));

app.post('/upload', upload.single('upl'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
  console.log(req.file);
  res.status(204).end();
})

var port = process.env.PORT || 8080;
app.listen(port,  function () {
    console.log('Node.js listening on port ' + port + '...');
});
Run Code Online (Sandbox Code Playgroud)

表格

    <form class="uploadForm" action="/upload" method="post" enctype="multipart/formdata">
        <label class="control-label">Select File</label>
        <input name="upl" id="input-1" type="file" class="file">
        <input type="submit" value="submit" />
    </form>
Run Code Online (Sandbox Code Playgroud)

非常感谢,这让我发疯.

Moh*_*tal 25

如果是邮递员,请尝试以下方法:

  1. 关闭API的邮递员选项卡
  2. 再次打开一个新标签
  3. 重建API请求然后发送.

这可能会解决问题.每次重新启动服务器时,都需要执行上述步骤再次调用API.multer的原因是将一些名为connect.sid的cookie发送回客户端,这可能需要进一步通信.使用旧cookie不会上传文件.

  • 这个答案非常有价值.谢谢.公开发行FYI https://github.com/postmanlabs/postman-app-support/issues/2602 (2认同)

msc*_*dex 17

你enctype的稍微不正确,应该是multipart/form-data代替multipart/formdata.