[React Native] image-picker (이미지 업로드)


🔥 1. 사전 설치

yarn add react-native-image-picker
yarn add react-native-permissions

🔥 2. IOS

Podfile 추가

1

info.plist 추가

1

🔥 3. 실행

권한 허용 알림

useEffect(() => {
  if (Platform.OS === "android") {
    check(PERMISSIONS.ANDROID.CAMERA)
      .then((result) => {
        if (result === RESULTS.DENIED || result === RESULTS.GRANTED) {
          return request(PERMISSIONS.ANDROID.CAMERA);
        } else {
          console.log(result);
          throw new Error("카메라 지원 안 함");
        }
      })
      .catch(console.error);
  } else {
    check(PERMISSIONS.IOS.PHOTO_LIBRARY)
      .then((result) => {
        if (
          result === RESULTS.DENIED ||
          result === RESULTS.LIMITED ||
          result === RESULTS.GRANTED
        ) {
          return request(PERMISSIONS.IOS.PHOTO_LIBRARY);
        } else {
          console.log(result);
          throw new Error("카메라 지원 안 함");
        }
      })
      .catch(console.error);
  }
}, []);

이미지 업로드 샘플 코드


export default function ExpertDescriptionInfo() {
    const [selectedImage, setSelectedImage] = useState('');
    const chooseImage = () => {
        const options: ImageLibraryOptions = {
          mediaType: 'photo', // 추가: 원하는 미디어 타입('photo', 'video' 등)을 지정.
        };

        launchImageLibrary(options, (response: ImagePickerResponse) => {
          // 이미지 라이브러리로부터의 응답 처리
          if (response.didCancel) {
            console.log('사용자가 이미지 선택을 취소했습니다.');
          } else if (response.errorCode === 'camera_unavailable') {
            console.log('카메라 사용이 불가능 합니다');
          } else if (response.errorCode === 'permission') {
            console.log('카메라 권한 설정이 잘못되었습니다');
          } else {
            console.log(response);
            const selectedImageUri = response.assets && response.assets[0]?.uri;

            if (selectedImageUri) {
              setSelectedImage(selectedImageUri);
              setProfile(selectedImageUri.uri);
            } else {
              // 선택된 이미지가 없는 경우의 처리
            }
          }
        });
    };
    return (
            {selectedImage && (
                <Image
                    style=
                    source=
                />
            )
        );
    }