2020/10/12
[Python3]SpooledTemporaryFileのサイズ(合計byte数)を取得する
実装内容
ファイルサイズ取得部分
SpooledTemporaryFile
インスタンスをseek(0, 2)
して、tell()
するとbyte数を取得できました。
file: tempfile.SpooledTemporaryFile
file.seek(0, 2) # seek to the end
file_size = file.tell()
応用例
これをFastAPIで、応用すると、合計アップロードファイル数のチェックができます。
from fastapi import APIRouter, status, HTTPException, UploadFile, File
router = APIRouter()
KB = 1024
MB = 1024 * KB
@router.put("/upload")
def upload(
upload_file: UploadFile = File(None),
):
upload_file.file.seek(0, 2) # seek to the end
file_size = upload_file.file.tell()
if file_size > 200 * MB:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="アップロードファイルは200MB以内のものを選択してください",
)
return "OK"
以上です。
関連する記事
[Python]ハイフンなし電話番号からハイフン付きに復元
Pythonでハイフンなしの日本の電話番号をハイフン付きのものに変換する
[Python]BeautifulSoup4でhtmlの解析
BeautifulSoup4というPythonのライブラリを使って、特定のURLのコンテンツを取得し、タイトルや説明文を取得できるようにしました。
[Python]銀行コードと支店コードの取扱
Pythonで銀行コード、支店コードデータを取り扱う便利なライブラリzengin-codeを導入しました。
Sendgridを使ってメールの受信を行う
Inbound Email Parse Webhookという機能を利用してメールを受信したらWebhookを呼び出すようにしました