[Google Cloud Platform] [Python] Cloud Storage에 이미지 여러장 업로드하기

최승원·2021년 4월 2일
2
post-thumbnail

현재 진행 중인 안드로이드 앱 개발 프로젝트의 이미지 업로드 / 다운로드 과정을 한 번에 정리하면 아래와 같다.

- PC에서 업로드한 이미지를 모바일에서 확인할 수 있도록 해야한다.
- 따라서 Google Cloud Storage와 Firebase의 Storage가 완전히 같은 저장소라는 점을 활용한다.
- PC에서 Google Cloud Storage로 이미지 파일을 업로드하고, Google Cloud Storage와 동일한 Firebase Storage에서 모바일로 이미지 파일을 다운로드한다.


일단 Google Cloud Storage를 활용하기 위해 cmd를 이용해 설치해주어야 한다.

pip install google.cloud.storage

이때 Cloud Storage 환경변수가 필요한데, 아래 링크에 들어가서 '서비스 계정 만들기'에 나온 내용을 고대~로 실행하면 된다.
서비스 계정 만들기 공식 문서

그리고 Cloud Storage에 단순히 한 장의 이미지만 올리는 것이 아니고, 한 폴더에 있는 모든 이미지를 가져와야 해서 해당 코드를 python으로 구현해 보았다.

import sys
import os, os.path

from google.cloud import storage
import glob

# [START storage_upload_file]
def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    # bucket_name = "your-bucket-name"
    # source_file_name = "local/path/to/file"
    # destination_blob_name = "storage-object-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    blob.upload_from_filename(source_file_name)

    print(
        "File {} uploaded to {}.".format(
            source_file_name, destination_blob_name
        )
    )
# [END storage_upload_file]

# 환경변수 추가
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="[환경변수 json 파일 경로]"

# 현재 폴더에 있는 .jpg 개수 count
jpgCounter = len(glob.glob1("[이미지 폴더 경로]","*.jpg"))
print(jpgCounter)

# cloud storage에 현재 폴더의 모든 .jpg 파일 업로드
for number in range(1, jpgCounter+1):
    if __name__ == "__main__":
        upload_blob(
            bucket_name="[bucket 이름]",
            source_file_name='[폴더 경로 + 이미지 이름]'.jpg',
            destination_blob_name="[업로드할 Google Cloud Storage 폴더 이름]",
        )

주로 참고한 사이트는 역시 '객체 업로드'에 관한 공식 문서이다.
Cloud Storage는 공식 문서가 세세하게 잘 되어있어서 넘 좋은듯
객체 업로드 공식 문서

profile
문의 사항은 메일로 부탁드립니다🙇‍♀️

0개의 댓글