Dayflt / WeirdMuseum

2021 HeadStart SilliconValley Internship AI Project - Team A (Dayfly)
5 stars 5 forks source link

How to store video in database #33

Open harloxx opened 3 years ago

harloxx commented 3 years ago

동영상이나 이미지를 데이터베이스에 직접 저장하는 것은 효율적인 방법이 아니다. 파일을 데이터베이스에 이진 파일로 저장하면 데이터베이스 서버의 로드가 급격하게 증가하고 데이터가 증가하면 처리 속도도 느려지게 된다. 따라서 영상을 일차적으로 Google 클라우드 버킷(GCS)에 저장하고, 해당 파일 경로(url)를 DB에 저장하는 방식을 사용하였다.

harloxx commented 3 years ago

구글 클라우드와 연동을 하기 위해 우선 관련 패키지를 다운받아야 한다.

...
google==3.0.0
google-api-core==1.30.0
google-auth==1.32.1
google-cloud-core==1.7.1
google-cloud-storage==1.40.0
google-crc32c==1.1.2
google-resumable-media==1.3.1
googleapis-common-protos==1.53.0
...
harloxx commented 3 years ago

관련 모듈을 import 하여 사용한다.

from google.cloud import storage

...

def upload_vid(destination_blob_name):
    """returns public url from the video loaded + removes local mixed vid"""
    source_file_name = '올릴 파일명'
    client = storage.Client()
    bucket = client.bucket(bucket_name)
    blob = bucket.blob('%s'%(destination_blob_name))

    blob.upload_from_filename(path('%s'%(destination_blob_name)))
    blob.make_public
    del_vid(destination_blob_name, False)
    print(blob.public_url)
    return blob.public_url
...