首页 > 解决方案 > 无法访问multer中的文件名

问题描述

在查看了大量文档后,Multer我相信我在我的快递服务器上进行了正确的设置。但是,每次我尝试访问req.files.filename传入文件的属性时,该值都会以未定义的形式返回。

这是我的 Express 服务器端代码:

        const storage = multer.diskStorage({
            destination: '../Uploads',
            filename: (req, file, cb) => cb(null, file.originalname)
        });
        
        const upload = multer({
          storage: storage
        });
    
    Router.post("/", upload.single("file"), async (req, res) => {
      debug.log("connected");
      debug.log(req.file);
      debug.log(req.body);
    
      if (!req.files) {
        debug.log("receiving connection but file not found");
        res.send({
          status: false,
          message: "No file uploaded",
        });
      } else {
        debug.log("receiving connection and file found");
    
        try {
          debug.log(req.files.filename);
          debug.log("attempting to save file" + req.files);
          const post = await new Post({
            title: req.files.filename,
            owner: req.body.owner,
            industry: req.body.industry,
          });

如果我理解正确,调用upload.single应该是req.file.filename一个可用的属性,但它似乎不起作用。

编辑:

我终于解决了这个问题!

显然使用app.use(fileUpload());中间件会以某种方式干扰Multer.

app.use(fileUpload());启用之前,我可以通过 访问文件req.files,但文件不会保存。

注释掉后,app.use(fileUpload());我可以访问该文件req.file,它会正确保存。

标签: reactjsexpressfile-uploadservermulter

解决方案


当您上传单个文件 ( upload.single) 时,请查看req.file,而不是req.files.


推荐阅读