tsepen
@tsepen
Frontend developer

Как загрузить и хранить фото на сервере (React+Express+Mongo)?

Как из Реакта передать фото на сервер с последующим хранением там?
На клиенте я получаю объект в котором хранится этот файл

{title: "1", description: "2", photo: File(1240), authorLink: "5a718696b9a93f333bc282df", author: "123"}


Отправляю объект через axios

axios
    .post("http://localhost:8000/addPost", post, { withCredentials: true 
    })


Но на сервер файл не доходит , req.body.photo = {}

app.post("/addpost", (req, res, next) => {

const post = new Post(req.body);
    post.save(err => {
        if (err) {
        console.log(err);
        res.end();
    }
   console.log("Сохранен " + post);
   res.statusCode = 200;
   res.json(post);
   }); 
});
  • Вопрос задан
  • 2297 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Используйте FormData для отправки файлов:
const formData = new FormData();

formData.append('file', someFile);
axios.post('/uploadFile', formData, {
  headers: {
    'Content-Type': 'multipart/form-data',
  },
});


На сервере используйте midlleware для обработки multipart/form-data. Вам подойдет: formidable, busboy, multer или любое другое middleware, решающее эту задачу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsepen
@tsepen Автор вопроса
Frontend developer
Вопрос решен, добавлю от себя - принять файлы на сервере можно по данной инструкции https://alligator.io/nodejs/uploading-files-multer...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы