【发布时间】: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