Я загрузил изображение, используя данные, сгенерированные base64 в react-native-image-picker. Он отлично отображается на консоли Firebase, но когда я пытаюсь посмотреть на него в своем браузере, он говорит об ошибке предварительного просмотра, и когда я нажимаю на него, это просто черный ящик. См. Скриншоты ниже
Вот мой код для загрузки:
const uploadImage = async ({data, filename, uri}) => {
const ext = uri.split('.').pop();
const name = uri.split('/').pop();
const path = `${user.uid}_${name}`;
const storageRef = firebase.storage().ref(`profiles/${path}`);
storageRef
.putString(data, 'base64', {contentType: `image/${ext}`})
.then(function (snapshot) {
console.log('SUCCESSSSS');
});
};
useEffect(() => {
ImagePicker.showImagePicker((response) => {
//console.log('Response = ', response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ', response.customButton);
} else {
console.log(response.uri);
uploadImage(response);
setAvatar({uri: response.uri});
}
});
}, []);
Изменить: я скопировал строку base64 в онлайн-конвертер, выглядит хорошо, вернул правильное изображение. Так что, похоже, с данными все в порядке. Что-то не так с тем, как firebase справляется с этим.
Изменить: я попытался явно установить тип image / jpeg вместо image / jpg, как указано здесь: Правильный способ показать изображение, когда Firestorage не работает или Ошибка при загрузке предварительного просмотра в Firestorage для iOS, но без разницы.