У меня возникли проблемы с просмотром файлов изображений, которые я загрузил в firebase, и только что заметил, что проблема связана с типом файлов в firebase.
Два файла в моей консоли хранения Firebase.Один загружен из моего симулятора IOS (octet-stream), а другой загружен непосредственно в консоль из браузера, который загружает правильно и доступен для просмотра.
Вот мои функции выбора и загрузки:
_selectPhoto = async () => {
const status = await getPermission(Permissions.CAMERA_ROLL);
if (status) {
let imageName = "pic"
const result = await ImagePicker.launchImageLibraryAsync(options);
if (!result.cancelled) {
Animated.timing(this.animatedWidth, {
toValue: 600,
duration: 15000
}).start()
this.uploadImage(result.uri, imageName)
.then(() => {
this.props.navigation.navigate('Profile')
})
.catch((error) => {
Alert.alert('Must Sign In');
this.props.navigation.navigate('Login')
console.log(error);
})
}
}
};
uploadImage = async (uri, imageName) => {
const user = firebase.auth().currentUser;
const response = await fetch(uri);
const blob = await response.blob();
let storageRef = firebase.storage().ref().child(''images/'+user.displayName+'/'+imageName+'.jpg'');
const snapshot = await storageRef.put(blob);
blob.close();
snapshot.ref.getDownloadURL().then(function(downloadURL) {
console.log("File available at", downloadURL);
user.updateProfile({
photoURL: downloadURL.toString(),
}).then(function() {
console.log('saved photo')
}).catch(function(error) {
console.log('failed photo')
});
});
}
Когда я получаю ссылку в своей консоли, она также содержит носитель и токен:
... .appspot.com / o / profile-pic.jpg? Alt = media & token = 56eb9c36-b5cd-4dbb-bec1-3ea5c3a74bdd
Если я CMD + клик в VS Code, я получаю ошибку:
{
error: {
code: 400,
message: "Invalid HTTP method/URL pair."
}
}
Естественно, когда я помещаю эту ссылку в браузер, он загружаетфайл с таким именем, но в нем указано:
Файл «pic.jpg» не может быть открыт.Возможно, он поврежден или использует формат файла, который Preview не распознает.
Возможно, это может быть что-то с mediaTypes, но я не совсем уверен, как его использовать.
mediaTypes: String - Выберите, какой тип носителя выбрать.Использование: ImagePicker.MediaTypeOptions., Где одно из: Изображения, Видео, Все.
Спасибо!