DjangoからGCSにファイルを保存


GCSにアップロードする方法をメモ

views.py
from django.shortcuts import render,redirect,HttpResponse
from google.cloud import storage
from django.conf import settings

def upload(request):
    file = request.FILES["file"]
    GS_CREDENTIALS = getattr(settings, "GS_CREDENTIALS", None) #settings.pyの変数
    client = storage.Client(
        credentials=GS_CREDENTIALS,
        project=GS_CREDENTIALS.project_id
    )
    bucket = client.get_bucket('hogehoge')  #バケット名
    blob = bucket.blob('files/newfile.csv') #保存するファイルのパスと名前
    blob.upload_from_file(file)
    return HttpResponse(blob.exists())

def download(request,filename):
    GS_CREDENTIALS = getattr(settings, "GS_CREDENTIALS", None) #settings.pyの変数
    client = storage.Client(
        credentials=GS_CREDENTIALS,
        project=GS_CREDENTIALS.project_id
    )
    bucket = client.get_bucket('hogehoge')
    blob = bucket.blob('files/'+filename)
    file = blob.download_as_bytes()
    response = HttpResponse(file,content_type='application/octet-stream')
    response['Content-Disposition'] = "filename="+filename
    return response