【问题标题】:Express file upload using multer file is undefined always使用 multer 文件快速上传文件始终未定义
【发布时间】:2020-09-06 10:25:05
【问题描述】:

我尝试制作一个 api 来使用 multer 中间件快速上传文件,但 request.file 未定义。

快递代码如下,

const express = require("express");
var multer = require('multer');
const cors = require("cors");

var app = express();

app.use(cors({ origin: true }));

const multerMid = multer({
  storage: multer.memoryStorage(),
  limits: {
    fileSize: 5 * 1024 * 1024,
  },
});

app.post('/saveFile', multerMid.single('dp'), (request,response)=>{
  try{
    var dp = request.file;
    if(dp)
    {
      return response.send("file uploaded");
    }
    else{
      return response.send("No file uploaded");
    }
  }catch(error)
  {
    return response.send(error.errorMessage);
  }
});
exports.app = functions.https.onRequest(app);

没有上传文件

这是我使用以下 html 将文件发布到路由时总是收到的。

<html>
    <head>

    </head>
    <body>
        <form action = "<server>/saveFile" method="post" enctype="multipart/form-data">
            <input type="file" name="dp"/>
            <input type="submit" value="Save">
        </form>
    </body>
</html>

我需要将文件上传到 firebase 存储,这就是为什么我不在 multer 对象中使用静态存储位置的原因,

我卡住了,请帮忙。

【问题讨论】:

    标签: express post file-upload multer


    【解决方案1】:

    这里需要定义一个中间件

    app.post('/saveFile', multerMiddleWare, (request,response)=>{...});
    
    const multerMiddleWare = (req, res, next) => {
      multerMid(req, res,
          (error) => {
            if (!error) return next();
            return next('error');
          });
    };
    
    
    const multerMid = multer({
      storage: multer.memoryStorage(),
      limits: {
        fileSize: 5 * 1024 * 1024,
      },
    }).single('dp');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多