Как получить mime-тип ответа get в reactjs?

#javascript #reactjs

Вопрос:

Я создаю приложение, которое загружает любое изображение(.jpeg,. jpg,. png,.gif) в корзину aws s3. А затем получение ответа в виде буфера массива. Как показано здесь.

 componentDidMount = () => {
    this.fetchUserProfileImage(this.state.id).then((response) => {
        const data = response.data;
        const base64String = btoa(String.fromCharCode(...new Uint8Array(data)));
        this.setState({
            imageUrl: base64String,
        });
    });
};
fetchUserProfileImage = async (userProfileId) => {
    return await axios.get(
        `http://localhost:5000/api/v1/users/${userProfileId}/image/download`,
        {
            responseType: 'arraybuffer',
        }
    );
};
 

Поскольку ответ представляет собой буфер массива, а не фактический файл с типом mime, таким как myimage.png или ссылка на изображение.
Как мне узнать тип mime для разных изображений из этого.

 <img src={`data:image/jpeg;base64,${this.state.imageUrl}`}
                        style={{ height: 50, width: 50 }}
                        alt='Rats'/>
 

Я пробовал использовать только изображения в формате jpeg.
Но если кто-то загрузит png или gif, как я с этим справлюсь?

Получение типа mime поможет настроить data:image${mime-type} ,чтобы я мог data:image/png; data:image/jpg соответствующим образом изменить или. Есть ли какое-либо запасное значение, если загруженное мной изображение имеет формат png или gif, а значение src изображения-jpeg.

 `src={`data:image/jpeg;...}` 
 

Обновить:
Как и предполагалось, я удалил responseType:'arraybuffer' его из запроса.
Я загрузил 3 изображения .jpeg .png и .gif.
Ответ.заголовки-это:

 Object { "content-length": "4752", "content-type": "image/jpeg" }
App.js:97
Object { "content-length": "512604", "content-type": "image/jpeg" }
App.js:97
Object { "content-length": "1764904", "content-type": "image/jpeg" } 
 

И ответ.данные являются:

 "����u0000u0010JFIFu0000u0001u0001u0001u0000Hu0000Hu0000u0000��u0000Cu0000u0004u0003u0003u0003u0003u0002u0004u0003...."
 

Комментарии:

1. Предложение, когда вы загружаете себя, захватите тип mime в свою базу данных через приложение node js. Затем во время рендеринга прочитайте тип mime из базы данных через приложение node и извлеките файл из AWS . Поскольку эти URL-адреса AWS будут сохраняться в базе данных. Наряду с этим сохраняется тип mime. Таким образом, объект встраивания / средство просмотра вы можете выбрать соответствующим образом и запретить загрузку файла AWS по умолчанию

2. Вы пробовали не указывать тип ответа и посмотреть, какой ответ вы получите ? Может быть, там есть какие-то заголовки.