Как получить данные в массив после публикации, используя axios в reactjs

Я создаю альбом, используя reactjs. Я использую loopback-storage-connector для хранения изображений.

это мой код для загрузки изображения

fileUploadCarImg =()=>{
    for (let index = 0; index < this.state.file.length; index++) {
        const element = this.state.file[index];
        const fd = new FormData();
        fd.append('image2',element,element.name )
        axios.post('http://localhost:3000/api/attachmentBanks/Car_Image/upload',fd , {
            onUploadProgress : ProgressEvent => {
                console.info('Upload Progress: ' + Math.round(ProgressEvent.loaded / ProgressEvent.total *100) + '%')
            }
        })
        .then(res => {
            console.info(res.data.result.files.image2[0].name)
        });

    }

}

Я хочу сохранить эти имена изображений в loopback-mysql-connector. поэтому моя идея состоит в том, чтобы хранить каждое имя изображения (res.data.result.files.image2[0].name) в массиве.

при загрузке изображения console.info(this.state.file) печать

Array(8) [ File, File, File, File, File, File, File, File ]

(8) […]
​
0: File { name: "IMG_20150905_072534.jpg", lastModified: 1442772056000, size: 241381, … }
​
1: File { name: "IMG_20151110_115108.jpg", lastModified: 1447206282000, size: 2749010, … }
​
2: File { name: "IMG_20151110_115124.jpg", lastModified: 1447206242000, size: 2797533, … }
​
3: File { name: "IMG_20151110_120625.jpg", lastModified: 1447205916000, size: 725661, … }
​
4: File { name: "IMG_20151110_120642.jpg", lastModified: 1447206122000, size: 687308, … }
​
5: File { name: "IMG_20151110_120704.jpg", lastModified: 1447205958000, size: 3364141, … }
​
6: File { name: "IMG_20151110_121043.jpg", lastModified: 1447205998000, size: 2921138, … }
​
7: File { name: "IMG_20151110_121050.jpg", lastModified: 1447206044000, size: 3867974, … }
​
length: 8
​
<prototype>: [

Мне просто нужно сохранить имя изображения. Кто-нибудь, пожалуйста, подскажите, как решить мою проблему?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
419
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предлагаю использовать функцию Массив.прототип.карта():

const names = res.data.result.files.map((file) => file.image2[0].name);

Массив довольно сложно расшифровать, но с небольшими корректировками он должен работать.

спасибо, сэр, но мне написать ваш код под ним, а затем часть в axios?

Arebhy Sridaran 20.01.2019 20:12

Да, просто поместите его туда, где вы зарегистрировали результат

Dor Shinar 20.01.2019 20:18

сэр, но мой код console.info(names) ничего не отображает

Arebhy Sridaran 20.01.2019 20:25

Не могли бы вы предоставить схему для объекта, который вы получаете? Возможно, вам будет проще помочь вам таким образом.

Dor Shinar 20.01.2019 20:28

Пожалуйста, отредактируйте свой вопрос и добавьте туда эту информацию. Вопросы на этом сайте должны содержать всю доступную информацию.

Dor Shinar 20.01.2019 20:37

сэр . когда я запускаю console.info('Прогресс загрузки:' + Math.round(ProgressEvent.loaded/ProgressEvent.total *100) + '%') только печатается.

Arebhy Sridaran 20.01.2019 20:39

Сэр, пожалуйста, проверьте это сейчас

Arebhy Sridaran 20.01.2019 20:44
Ответ принят как подходящий

Пожалуйста, рассмотрите возможность использования await

let data = [];
for (let index = 0; index < this.state.file.length; index++) {
    const element = this.state.file[index];
    const fd = new FormData();
    fd.append('image2',element,element.name )

    try {
        const res = await axios.post('http://localhost:3000/api/attachmentBanks/Car_Image/upload',fd , {
            onUploadProgress : ProgressEvent => {
                console.info('Upload Progress: ' + Math.round(ProgressEvent.loaded / ProgressEvent.total *100) + '%')
            }
        });

        data.push(res.data.result.files.image2[0].name);

    } catch(error) {
        //your handler
    }

}

Другие вопросы по теме