components/SetupProfile.js
(import storage from '@react-native-firebase/storage'; function () { ( ) const [loading, setLoading] = useState(false); const async () => { setLoading(true); let photoURL = null; if (response) { const asset = response.assets[0]; const extension = asset.fileName.split('.').pop(); // 확장자 추출 const reference = storage().ref(`/profile/${uid}.${extension}`); if (Platform.OS === 'android') { await reference.putString(asset.base64, 'base64', { contentType: asset.type, }); } else { await reference.putFile(asset.uri); } photoURL = response ? await reference.getDownloadURL() : null; } const user { id: uid, displayName, photoURL, }; (user); (user); }; ( ))
OS가 iOS냐 안드로이드냐에 따라 업로드 방식이 조금 다릅니다. iOS에서는 uri에서 파일을 불러와서 바로 업로드하고, 안드로이드에서는 putString을 통해 base64로 인코딩된 데이터를 업로드합니다.