使用multer文件上传快递文件始终未定义。

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

我试图用multer中间件做一个api来上传文件,但是request.file没有定义。

Express代码如下。

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把文件发布到路由上时,我总是收到这样的信息,我需要把文件上传到firebase存储空间,这就是为什么我在multer对象中不使用静态存储位置的原因。

<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个回答
0
投票

这里需要定义一个中间件

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');
© www.soinside.com 2019 - 2024. All rights reserved.