选择我使用的图像import * as ImagePicker from 'expo-image-picker';
图像拾取过程
const permission = await ImagePicker.requestMediaLibraryPermissionsAsync();
if (permission.granted === false) {
Alert.alert('You did not accept access to internal storage');
} else {
console.log(permission);
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
aspect: [4, 3],
quality: 1,
});
console.log(result);
if (!result.cancelled) {
const imageToUploadUri = result.uri;
setImage(imageToUploadUri);
Alert.alert('picture loaded now upload it to the storage');
} else {
Alert.alert('You did not chose any image');
}
}
};
图像设置成功,但当我试图将此图像上传到firebase存储时,应用程序仅在ios上崩溃。
我使用的firebase进口:
import firebase from 'firebase/compat/app';
import { getDownloadURL, getStorage, ref, uploadBytes } from 'firebase/storage';
// image upload function
export const uploadImage = async (url: string, clubName: string) => {
const storage = getStorage();
const reffernce = ref(storage, `home_image/${clubName}_main.png`);
const image = await fetch(url);
const bytes = await image.blob();
await uploadBytes(reffernce, bytes);
}
错误在上
const storage = getStorage()
getStorage需要一个应用程序参数来获取该应用程序存储。
你应该写这样的东西:
import { initializeApp } from "firebase/app"
import { getStorage } from "firebase/storage"
const config = { apiKey: <api_key>, ... }
const app = initializeApp(config)
const storage = getStorage(app)
建议将其写入配置文件(例如:firebaseConfig.js(中,然后在每次需要时导入存储变量