728x90
반응형
이 코드는 파이어베이스 스토리지 이미지 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 형식이 달라진다면 이 코드를 수정해야 할 수도 있습니다.
728x90
반응형
'Flutter > Firebase' 카테고리의 다른 글
파이어베이스에서 데이터를 플러터에서 캐싱[ sqflite 패키지 로컬 스토리지 이용 ] (0) | 2024.07.26 |
---|---|
플러터에서 파이어베이스 로그인과 생체 인증 연동 방법 (0) | 2024.07.26 |
플러터에서 파이어베이스 스토리지 이미지 URL로 이미지 삭제하기 (0) | 2024.07.26 |
플러터에서 백그라운드 서비스를 사용한 스트림 처리 실제 개발 예제[flutter_background_service 패키지] (0) | 2024.07.25 |
플러터에서 백그라운드에서 파이어베이스 스트림 데이터 받아오기: 심층 가이드 (0) | 2024.07.25 |