@Yaolegol

React Как передать на сервер объект с данными и картинки одновременно?

Всем привет, подскажите как в react передать на сервер объект с данными и картинки одновременно?

Сейчас компонент передает данные на сервер (без картинки) так:

//обработчик на кнопку отправить
handleCreateProduct = event => {
        let postData = {
            category: this.state.categoryValue,
            title: this.state.title
            image:  this.state.title //заготовка для картинки
         }
         axios.post('/admin/create-product', postData )
}

как добавить отправку картинки?
  • Вопрос задан
  • 3135 просмотров
Решения вопроса 1
@Yaolegol Автор вопроса
Нашел решение:

let formData = new FormData();
        let config = {
            header: {'content-type': 'multypart/form-data'}
        }        
        
        //смысл цикла - пройтись по postData (см. код в самом вопросе) и для каждого
        //значения (category, title) выполнить
        //formData.append( key (например category), postData[key] (значение) );
           
        for (let key in postData) {
            
            //для картинок сделать тоже самое только с одним ключом "images"

            if(key === 'images') {                
                for (let key in postData['images']) {
                    formData.append('images', postData['images'][key]);
                }  
            } else {
                formData.append(key, postData[key]);
            }
        }

        axios.post('/admin/create-product', formData, config)


Затем, чтобы корректно обработать это все на node сервере пишем код:

//код для настройки сервера на node js и express см. в интернете
//подключаем multer 
const multer = require('multer');
const uploads = multer({dest:'uploads/'});

app.use(uploads.any());

//используем express router - как пользоваться см. в интернете
router.post('/admin/create-product', (req, res, next) => {
    console.log('req.files', req.files);
    console.log('req.body', req.body);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы