본문 바로가기
Flutter/Firebase

플러터에서 파이어베이스 스토리지 이미지주소 파싱으로 삭제하기(https://)

by Maccrey Coding 2024. 7. 17.
728x90
반응형

 

파이어베이스 스토리지는 이미지, 동영상, 오디오 파일 등 다양한 종류의 데이터를 저장하는 데 사용할 수 있는 강력한 서비스입니다.

이 블로그 글에서는 초보자 개발자를 위해 플러터 앱에서 파이어베이스 스토리지 이미지를 주소만 사용하여 삭제하는 방법을 자세히 안내합니다.

 

1. 필요한 라이브러리

먼저, pubspec.yaml 파일에 다음 라이브러리를 추가해야 합니다.

dependencies:
  firebase_core: ^1.12.0
  firebase_storage: ^10.3.1
 

터미널에서 다음 명령을 실행하여 라이브러리를 설치합니다.

Bash
flutter pub get
 

2. 삭제 프로세스

 

2.1 스토리지 인스턴스 가져오기

// 스토리지 인스턴스 가져오기
final FirebaseStorage storage = FirebaseStorage.instance;
 

2.2 이미지 주소 파싱

먼저, 삭제하려는 이미지의 주소를 파싱하여 버킷 이름, 파일 경로, 액세스 토큰을 추출해야 합니다.

예시 주소: https://firebasestorage.googleapis.com/v0/b/test-dfcda.appspot.com/o/boards_Images%2F2024.4.28%20_1%3A4_Icon_scaled_biohnya_123.png?alt=media&token=8876bce8-d90f-4e9d-80c5-b0d6139cca55

- 버킷 이름: test-dfcda.appspot.com - 파일 경로: boards_Images/2024.4.28%20_1%3A4_Icon_scaled_biohnya_123.png - 액세스 토큰: 8876bce8-d90f-4e9d-80c5-b0d6139cca55

 

2.3 파일 삭제 함수

Dart
// 파일 삭제 함수
Future<void> deleteImageFromStorage(String bucketName, String filePath, String accessToken) async {
  try {
    // 스토리지 참조 가져오기
    final storageRef = storage.refFromUrl('gs://$bucketName/$filePath?alt=media&token=$accessToken');

    // 파일 삭제
    await storageRef.delete();
    print('이미지 삭제 성공');
  } on FirebaseException catch (e) {
    // 에러 처리
    print('이미지 삭제 오류: ${e.message}');
  }
}
 

2.4 예시: 이미지 주소로 삭제

import 'package:flutter/material.dart';
import 'package:firebase_storage/firebase_storage.dart';

class ImageDeleteScreen extends StatefulWidget {
  @override
  _ImageDeleteScreenState createState() => _ImageDeleteScreenState();
}

class _ImageDeleteScreenState extends State<ImageDeleteScreen> {
  String _storageUrl = 'https://firebasestorage.googleapis.com/v0/b/testershare-dfcda.appspot.com/o/boards_Images%2F2024.4.28%20_1%3A4_Icon_scaled_biohnya_1024.png?alt=media&token=8876bce8-d90f-4e9d-80c5-b0d6139cca03';

  // 이미지 주소 파싱 함수
  void _parseStorageUrl() {
    final urlParts = Uri.parse(_storageUrl);
    final bucketName = urlParts.host;
    final filePath = urlParts.pathSegments.last;
    final accessToken = urlParts.queryParameters['token']!;

    deleteImageFromStorage(bucketName, filePath, accessToken);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Delete'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('삭제하려는 이미지 주소: $_storageUrl'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _parseStorageUrl,
              child: Text('이미지 삭제'),
            ),
          ],
        ),
      ),
    );
  }
}
 

3. 주의 사항

  • 파일 삭제 권한이 있는지 확인해야 합니다.
  • 삭제된 파일은 복구할 수 없으므로 신중하게 수행해야 합니다.
  • 오류 처리 및 예외 처리를 적절하게 구현해야 합니다.
  • 실제 앱에서 사용 시에는 주소 파싱 부분을 실제로 사용하는 환경에 맞게 변경해야 합니다.

4. 추가 정보

이 블로그 글에서 소개된 내용을 통해 플러터 앱에서 파이어베이스 스토리지 이미지를 주소만 사용하여 삭제하는 방법을 쉽게 이해하셨기를 바랍니다.

더 궁금한 점이나 도움이 필요한 부분이 있으면 언제든지 질문해주세요.

728x90
반응형