🥌

【Python】「SuryaSekhar14/vercel_blob」を使ってVercel Blobを使用する

2025/03/08に公開

概要

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