본문 바로가기
Flutter/Flutter Programming

파이어베이스 스토리지 이미지 URL 파싱 하기[자세한 코드 설명]

by Maccrey 2024. 6. 20.
반응형

이 코드는 파이어베이스 스토리지 이미지 URL에서 이미지 경로를 추출하는 역할을 합니다.

 

파이어베이스 스토리지 이미지 URL은 다음과 같은 형식을 가지고 있습니다.

https://firebasestorage.googleapis.com/v0/b//o/?alt=media&token=

 

예시

https://firebasestorage.googleapis.com/v0/b/testershare-dfcda.appspot.com/o/postImages%2F2024.6.17%20_13%3A27_App_scaled_1000000079.jpg?alt=media&token=27ecd171-a31b-4ffa-8c70-c0006224b51e

 

예를 들어, 위에서 제공된 예시 URL을 사용하면 다음과 같은 경로가 추출됩니다.

postImages/2024.6.17_13:27_App_scaled_1000000079.jpg

파이어베이스 스토리지 이미지 URL 파싱 코드 분석

String extractImagePath(String url) {
  final startIdx = url.indexOf('/o/') + 3;
  final endIdx = url.indexOf('?alt=media');
  return url.substring(startIdx, endIdx);
}
 

1. 함수 선언

  • extractImagePath라는 함수를 선언합니다.
  • 이 함수는 문자열 형태의 이미지 URL (url)을 파라미터로 받습니다.
  • 함수의 리턴 값은 추출된 이미지 경로 (문자열)입니다.

2. 이미지 경로 시작 인덱스 찾기

  • url.indexOf('/o/') 코드는 파이어베이스 스토리지 이미지 URL에서 "/o/" 문자열이 처음 나타나는 위치 (인덱스)를 찾습니다.
  • 예를 들어, URL이 "https://firebasestorage.googleapis.com/v0/b/testershare-dfcda.appspot.com/o/postImages%2F2024.6.17%20_13%3A27_App_scaled_1000000079.jpg?alt=media&token=27ecd171-a31b-4ffa-8c70-c0006224b51e" 이라면 /o/ 문자열의 인덱스는 19입니다.

3. 시작 인덱스 조정

  • /o/ 문자열의 길이는 3입니다. 따라서 실제 이미지 경로의 시작 위치를 찾기 위해 + 3 을 더합니다.
  • 예시에서 계산하면 19 (인덱스) + 3 = 22가 되어 이미지 경로의 실제 시작 위치가 22번째 인덱스가 됩니다.

4. 이미지 경로 끝 인덱스 찾기

  • url.indexOf('?alt=media') 코드는 파이어베이스 스토리지 이미지 URL에서 "?alt=media" 문자열이 처음 나타나는 위치 (인덱스)를 찾습니다.
  • 이 문자열은 일반적으로 이미지 URL 뒤에 붙는 쿼리 파라미터의 시작 부분을 나타냅니다.

5. 이미지 경로 추출

  • url.substring(startIdx, endIdx) 코드는 URL 문자열에서 startIdx (이미지 경로 시작 위치)부터 endIdx (이미지 경로 끝 위치) 바로 앞까지의 문자열을 잘라내서 반환합니다.

6. 예시

위 코드를 예시 URL인 "[유효하지 않은 URL 삭제됨]..."에 적용하면 다음과 같이 작동합니다.

  • startIdx = 19 (위 설명 참고)
  • endIdx = 40 ( "?alt=media" 문자열의 인덱스)
  • 추출된 이미지 경로: "images/photo.jpg"

7. 코드 요약

이 함수는 파이어베이스 스토리지 이미지 URL의 특정 형식 (앞 부분과 쿼리 파라미터)에 의존하여 이미지 경로를 추출합니다. 만약 이미지 URL 형식이 달라진다면 이 코드를 수정해야 할 수도 있습니다.

 

 

수발가족을 위한 일기장 “나비일기장

 

https://play.google.com/store/apps/details?id=com.maccrey.navi_diary_release

 

구글플레이 앱 배포의 시작! 비공개테스트 20명의 테스터모집을 위한 앱 "테스터 쉐어"

 

https://play.google.com/store/apps/details?id=com.maccrey.tester_share_release

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

 

카카오톡 오픈 채팅방

https://open.kakao.com/o/gsS8Jbzg

 

반응형