
๋ชจ๋ฐ์ผ ์ฑ์์ ์ด๋ฏธ์ง๋ฅผ ์ฐ๊ฑฐ๋ ์ ํํด์ ์
๋ก๋ํ๋ ๊ธฐ๋ฅ์
SNS, ์ผํ, ํฌ์ค์ผ์ด ๋ฑ ๊ฑฐ์ ๋ชจ๋ ์๋น์ค์์ ๋ฑ์ฅํ๋ค.
์ด๋ฒ ๊ธ์์๋
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ํน์ง | ์ถ์ฒ ์ํฉ |
|---|---|---|
react-native-image-picker | ์นด๋ฉ๋ผ + ๊ฐค๋ฌ๋ฆฌ ์ง์, ๋ค์ดํฐ๋ธ ๊ธฐ๋ฐ | Bare Workflow |
expo-image-picker | Expo ํ๋ก์ ํธ ์ ์ฉ, ์ฌ์ฉ ํธํจ | Expo ๊ธฐ๋ฐ ์ฑ |
expo-camera | ์ง์ ์นด๋ฉ๋ผ UI ๊ตฌํ ๊ฐ๋ฅ | ์ปค์คํ UI ํ์ํ ๋ |
npm install react-native-image-picker
npx pod-install
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
import { launchImageLibrary } from 'react-native-image-picker';
const pickImage = () => {
launchImageLibrary(
{
mediaType: 'photo',
quality: 0.8,
},
(response) => {
if (response.didCancel) return;
if (response.assets) {
console.log(response.assets[0].uri); // ์ด๋ฏธ์ง ๊ฒฝ๋ก
}
}
);
};
โ
๊ฐค๋ฌ๋ฆฌ์์ ์ด๋ฏธ์ง ์ ํ
โ
response.assets[0].uri๋ฅผ ํตํด ์ด๋ฏธ์ง ์ ๊ทผ
import { launchCamera } from 'react-native-image-picker';
const takePhoto = () => {
launchCamera(
{
mediaType: 'photo',
saveToPhotos: true,
},
(response) => {
if (response.assets) {
const uri = response.assets[0].uri;
uploadImageToServer(uri);
}
}
);
};
saveToPhotos: true ์ต์
์ผ๋ก ์ดฌ์ ํ ์ ์ฅ๋ ๊ฐ๋ฅconst uploadImageToServer = async (uri: string) => {
const formData = new FormData();
formData.append('file', {
uri,
type: 'image/jpeg',
name: 'photo.jpg',
});
await fetch('https://your-api.com/upload', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
},
body: formData,
});
};
โ
์๋ฒ๋ก multipart/form-data ์ ์ก
โ
์ค์ ๋ฐฑ์๋ ๊ตฌํ์ ๋ฐ๋ผ ํ์ผ๋ช
, ํ ํฐ ํ์ํ ์ ์์
READ_MEDIA_IMAGES ๊ถํ ํ์Info.plist์ ์ค๋ช
์ถ๊ฐ<key>NSCameraUsageDescription</key>
<string>ํ๋กํ ์ฌ์ง ์ดฌ์์ ์ํด ์นด๋ฉ๋ผ ์ ๊ทผ์ด ํ์ํฉ๋๋ค.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>์ฌ์ง ์
๋ก๋๋ฅผ ์ํด ์ฌ์ง ์ ๊ทผ์ด ํ์ํฉ๋๋ค.</string>
์ฒ์์ Expo ๊ธฐ๋ฐ์ผ๋ก ๋น ๋ฅด๊ฒ expo-image-picker๋ฅผ ์ผ์ง๋ง,
์นด๋ฉ๋ผ UI ์ปค์คํฐ๋ง์ด์ง์ด ํ์ํด์ง๋ฉด์
react-native-image-picker๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ค.
์ด๋ฏธ์ง ์
๋ก๋๋ FormData ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ,
์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง โ ์
๋ก๋ ์์๋ก ์ฒ๋ฆฌํด์
์ฑ๋ฅ๊ณผ UX ๋ชจ๋ ์ฑ๊ธธ ์ ์์๋ค.
๐ท โ์ฌ์ง ํ ์ฅ์๋ UX์ ์ฑ๋ฅ์ด ์จ์ด์๋ค.โ