NodeJS + Multer
Привет, ребята, я пытаюсь загрузить изображение на свой сервер в Node из интерфейса React, но я постоянно получаю эту ошибку
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
})
Это мой запрос Axios Post от моего реагирующего клиента
PS: ProfileData и аватар - это полезные данные, которые я приношу сюда через redux (я не думаю, что это должно иметь значение)
const image = new FormData();
image.append("avatar", avatar, avatar.name);
axios
.post("/api/profile", image, profileData)
Это та же ошибка, что и в этом случае. Ошибка: ENOENT: нет такого файла или каталога, откройте «public / avatar / avatar-branchlogo-1532643027870.png»
Похоже, если он искал файл, а не создавал его
У вас есть каталог public/avatar? Multer не создает каталоги, если они не существуют.
Тогда позвольте мне дать на это ответ :)





Multer не создает каталоги, если они не существуют. Итак, если нет, просто создайте каталог для загрузки, которым в вашем случае является public/avatar.
У меня небольшая проблема, когда я получаю данные в экспресс-роутере, можно ли получить объект с пользовательскими данными и мульти-изображением? как мне это сделать, потому что то, как я стараюсь, не работает
Просто задайте еще один вопрос об этом со всем связанным с ним кодом. Прямо сейчас неясно, что к чему :) Например, где находятся пользовательские данные, как вы передаете их в бэкэнд и т. д. Я не настолько эксперт, но с новым вопросом больше людей видят вашу проблему.
Не уверен, но, вероятно, это из-за пробелов в имени файла.