【问题标题】:NodeJs+React multer settings errNodeJs + React multer设置错误
【发布时间】:2018-07-26 21:27:47
【问题描述】:

NodeJS + Multer

大家好,我正在尝试从 React 前端将图像上传到我在 Node 中的后端,但我经常收到此错误

Error: ENOENT: no such file or directory, open 'public/avatar/avatar-Captura de pantalla de 2018-07-18 11-16-36_-1532639921615.png'

这就是我在后端初始化 multer 的方式

// Initialize multer storage
const storage = multer.diskStorage({
  destination: function(req, file, callback) {
    callback(null, "./public/avatar");
  },
  filename: function(req, file, callback) {
    callback(
      null,
      file.fieldname +
        "-" +
        file.originalname.replace(path.extname(file.originalname), "_") +
        "-" +
        Date.now() +
        path.extname(file.originalname)
    );
  }
});

const upload = multer({ storage: storage });

我收到了这个

router.post(
  "/",
  upload.single("avatar"),
  passport.authenticate("jwt", { session: false }),
  (req, res) => {
     //Code
   })

这是来自我的 react 客户端的 Axios Post 请求

PS:ProfileData 和 avatar 是我通过 redux 带来的有效载荷(我认为这无关紧要)

const image = new FormData();
  image.append("avatar", avatar, avatar.name);
  axios
    .post("/api/profile", image, profileData)

【问题讨论】:

  • 不确定但可能是因为文件名中的空格。
  • 同样的错误 Error: ENOENT: no such file or directory, open 'public/avatar/avatar-branchlogo-1532643027870.png'
  • 看起来好像是在寻找文件而不是创建文件
  • 你有public/avatar 目录吗?如果目录不存在,Multer 不会创建目录。
  • 那么,让我来回答一下吧:)

标签: node.js reactjs express multer


【解决方案1】:

如果目录不存在,Multer 不会创建目录。因此,如果没有,只需创建上传目录,在您的情况下为 public/avatar

【讨论】:

  • 我有一个小问题,当我在快速路由器中接收数据时,可以接收带有用户数据和多图像的对象吗?我应该怎么做,因为我尝试它的方式不起作用
  • 用你所有的相关代码问另一个问题。现在它是什么是模棱两可的 :) 比如,用户数据在哪里,你如何将它传递到后端等等。我不是那么专家,但有一个新问题,更多人会看到你的问题。
猜你喜欢
  • 2016-02-02
  • 2021-08-16
  • 2019-01-06
  • 2021-02-25
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 2015-11-06
相关资源
最近更新 更多