始终未定义使用多文件的快速文件上传

时间:2020-05-20 06:34:05

标签: express post file-upload multer

我曾经尝试过使用multer中间件制作一个api以快速上传文件,但是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对象中使用静态存储位置的原因,

我被卡住了,请帮忙。

1 个答案:

答案 0 :(得分: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');