【问题标题】:Unable to access filename in multer无法访问multer中的文件名
【发布时间】:2021-10-30 05:01:50
【问题描述】:

查看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访问文件,它会正确保存。

【问题讨论】:

    标签: reactjs express file-upload server multer


    【解决方案1】:

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

    【讨论】:

    • 我同意你的逻辑是有道理的。但是,当我尝试记录 req.file 而不是 req.files 时,我得到了未定义。我相信问题更多,因为某种原因我的文件没有正确保存在“存储”功能中,这就是为什么永远不会调用文件名的原因。
    猜你喜欢
    • 2017-02-10
    • 2017-02-07
    • 2017-08-30
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2018-01-06
    • 2021-03-29
    相关资源
    最近更新 更多