[swift] Firebase Storage와 Swift 앱에서의 이미지 업로드 및 다운로드

Firebase는 실시간 데이터베이스, 인증, 클라우드 메시징 등 다양한 기능을 제공하는 백엔드 서비스입니다. 이번에는 Firebase Storage를 사용하여 Swift 앱에서 이미지를 업로드하고 다운로드하는 방법에 대해 알아보겠습니다.

Firebase 프로젝트 설정하기

Firebase Storage를 사용하기 위해서는 먼저 Firebase 프로젝트를 설정해야 합니다. Firebase 콘솔에 접속하여 새 프로젝트를 생성한 후, Firebase SDK 및 인증 정보를 다운로드 받아 Xcode 프로젝트에 추가합니다.

Firebase Storage는 Firebase 프로젝트의 일부로 제공되므로, 따로 설정이 필요하지 않습니다.

이미지 업로드하기

Firebase Storage를 사용하여 이미지를 업로드하려면 다음 단계를 따릅니다.

  1. Firebase Storage 참조 가져오기:
    import FirebaseStorage
    
  2. 이미지를 업로드할 버킷 참조 생성하기:
    let storageRef = Storage.storage().reference()
    
  3. 이미지 데이터를 가져와서 업로드하기:
    guard let image = UIImage(named: "example.jpg"), let imageData = image.pngData() else {
        return
    }
       
    let imageName = "my_image.jpg"
    let imageRef = storageRef.child(imageName)
       
    let uploadTask = imageRef.putData(imageData, metadata: nil) { (metadata, error) in
        if let error = error {
            // 업로드 실패
            print("Error uploading image: \(error.localizedDescription)")
        } else {
            // 업로드 성공
            print("Image uploaded successfully!")
               
            // 업로드된 이미지의 다운로드 URL 가져오기
            imageRef.downloadURL { (url, error) in
                if let error = error {
                    print("Error retrieving download URL: \(error.localizedDescription)")
                } else {
                    if let downloadURL = url {
                        // 다운로드 URL을 이용하여 이미지를 표시하거나 다른 작업 수행
                        print("Download URL: \(downloadURL.absoluteString)")
                    }
                }
            }
        }
    }
    

위의 코드를 사용하면 Firebase Storage에 이미지가 업로드되며, 업로드 후에는 이미지의 다운로드 URL을 가져올 수 있습니다.

이미지 다운로드하기

Firebase Storage에서 이미지를 다운로드하려면 다음 단계를 따릅니다.

  1. Firebase Storage 참조 가져오기:
    import FirebaseStorage
    
  2. 이미지 다운로드할 버킷 참조 생성하기:
    let storageRef = Storage.storage().reference()
    
  3. 다운로드할 이미지의 경로 지정하기:
    let imageName = "my_image.jpg"
    let imageRef = storageRef.child(imageName)
    
  4. 이미지 다운로드하기:
    imageRef.getData(maxSize: 1 * 1024 * 1024) { (data, error) in
        if let error = error {
            print("Error downloading image: \(error.localizedDescription)")
        } else {
            if let imageData = data, let image = UIImage(data: imageData) {
                // 다운로드한 이미지를 표시하거나 다른 작업 수행
                print("Image downloaded successfully!")
            }
        }
    }
    

위의 코드를 사용하여 Firebase Storage에서 이미지를 다운로드할 수 있습니다.

Firebase Storage는 이미지 업로드 및 다운로드 외에도 다양한 기능과 옵션을 제공합니다. Firebase Storage 문서(https://firebase.google.com/docs/storage)를 참고하여 더 많은 정보를 얻을 수 있습니다.