🥌
【Python】「SuryaSekhar14/vercel_blob」を使ってVercel Blobを使用する
概要
Vercel BlobはVercel Blobを試してみるの記事で概要が紹介されている通り、Vercelで提供されているストレージサービスです。
Vercel BlobをPythonから使う際にHow to use Vercel Blob Storage with Pythonの記事で紹介されている、SuryaSekhar14/vercel_blobというライブラリを使う方法が挙げられます。今回はこのライブラリを少し使ってみたのでメモ書きします。
前提
- 使用した
SuryaSekhar14/vercel_blob
のバージョンは0.3.0
です。
前準備
Vercel Blobでは、以下のイメージの通りストレージのグループがDatabaseという括りで管理されています(無料枠だとDatabaseが1つしか作れません)。このDatabaseの単位でsecretが発行されるので、取得したsecretをBLOB_READ_WRITE_TOKEN
の環境変数に設定します。
実装サンプル
まず、アップロードするファイル名の設定について「フォルダ名/ファイル名」のような感じで設定可能です。Djangoの環境での実装になりますが、以下の通りファイルパスとBytesIOをまずは取得します。
def upload_image_file(image_file: Upload) -> str:
file_uploaded: UploadedFile = image_file
# フォルダとファイル名を指定
file_path = f"{ENV.get_value("SAMPLE_FOLDER")}/{file_uploaded.name}"
# ファイルパスとBytesIO取得
return upload_file_vercel_blob(file_path, file_uploaded.file)
その後Vercel Blobにアップロードします。BytesIOからバイト配列を取得します。アップロードが完了したらアップロード先のurlを取得します。(Vercel Blobのurlは、この記事を書いてる時点では無条件でパブリックらしい)
def upload_file_vercel_blob(file_path: str, file_obj: io.BytesIO) -> str:
# bytesに変換してアップロード後にurlを取得
resp = vercel_blob.put(file_path, file_obj.read())
return resp["url"]
ファイルを削除したい場合は、urlを渡す形になります。
def delete_file_vercel_blob(file_url: str):
vercel_blob.delete(file_url)
Discussion