2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

この記事では、Windows 11環境でFastAPIを使って基本的なファイルアップロード機能を実装する方法を解説します。FastAPIは、Pythonで高速かつ効率的なWeb APIを構築するための現代的なフレームワークです。

目次

  1. 環境設定
  2. 基本的なファイルアップロード
  3. 動作確認の手順
  4. まとめ

1. 環境設定 (Windows 11向け)

まず、Windows 11でPythonとFastAPIの環境を設定します。

  1. Pythonのインストール:

    • Python公式サイトからWindows用のインストーラをダウンロードします。
    • インストール時に「Add Python to PATH」にチェックを入れてください。
  2. 必要なパッケージのインストール:
    コマンドプロンプトを管理者として実行し、以下のコマンドを入力します:

    pip install fastapi
    pip install python-multipart
    pip install uvicorn
    
  3. 開発環境の準備:

    • Visual Studio CodeやPyCharmなどの開発環境をインストールすると便利です。
    • C:\Workフォルダを作成します(存在しない場合)。

2. 基本的なファイルアップロード

以下は、単一のファイルをアップロードする基本的な実装です。ファイルをC:\Work\uploadsに保存するように設定しています。

from fastapi import FastAPI, File, UploadFile
import shutil
from pathlib import Path

app = FastAPI()

UPLOAD_DIR = Path(r"C:\Work\uploads")

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    try:
        UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
        save_path = UPLOAD_DIR / file.filename
        
        with save_path.open("wb") as buffer:
            shutil.copyfileobj(file.file, buffer)
        
        return {"filename": file.filename, "save_path": str(save_path)}
    finally:
        file.file.close()

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

この例では、アップロードされたファイルをC:\Work\uploadsフォルダに保存します。具体的には:

  1. UPLOAD_DIR変数を使用して、保存先ディレクトリをC:\Work\uploadsに設定しています。
  2. UPLOAD_DIR.mkdir(parents=True, exist_ok=True)で、指定したディレクトリが存在しない場合に自動的に作成します。
  3. ファイルはC:\Work\uploads\[アップロードされたファイル名]として保存されます。

注意点:

  • アプリケーションを実行するユーザーがC:\Work\uploadsディレクトリに書き込み権限を持っていることを確認してください。

3. 動作確認の手順 (Windows 11向け)

Windows 11環境での動作確認手順は以下の通りです:

  1. サーバーの起動:

    • コマンドプロンプトを開きます(Windowsキー + R を押し、「cmd」と入力)。
    • プロジェクトフォルダに移動し、以下のコマンドを実行します:
      python -m uvicorn main:app --reload
      
  2. SwaggerUIでのテスト:

    • ブラウザ(Edge推奨)でhttp://localhost:8000/docsにアクセスします。
    • FastAPIが自動生成したSwagger UIインターフェースが表示されます。
    • /uploadfile/エンドポイントを選択します。
    • "Try it out"ボタンをクリックし、ファイルを選択してアップロードします。
  3. コマンドプロンプト(cmd)でのテスト:
    Windows 11のコマンドプロンプトを開き、以下のようなコマンドを使用してテストできます:

    curl -X POST "http://localhost:8000/uploadfile/" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "file=@C:\path\to\your\file.jpg"
    

    注意: Windows 10以降にはcurlコマンドが標準で含まれています。

  4. 結果の確認:

    • アップロードが成功した場合、ファイル名や保存パスなどの情報がJSON形式で返されます。
    • アップロードされたファイルはC:\Work\uploadsフォルダに保存されます。以下の手順で確認できます:
      1. エクスプローラーを開き、アドレスバーにC:\Work\uploadsと入力します。
      2. フォルダ内にアップロードされたファイルが表示されます。
    • また、コマンドプロンプトを使用して確認することもできます:
      1. コマンドプロンプトを開きます。
      2. cd C:\Work\uploadsコマンドを実行してアップロードフォルダに移動します。
      3. dirコマンドを実行して、アップロードされたファイルを確認します。

4. まとめ

この記事では、FastAPIを使用して基本的なファイルアップロード機能を実装する方法を紹介しました。主なポイントは以下の通りです:

FastAPIを使用することで、簡単にファイルアップロード機能を実装できます。
アップロードされたファイルはC:\Work\uploadsフォルダに保存されます。
SwaggerUIやcurlを使用して、実装した機能のテストが簡単に行えます。

image.png

ファイルアップロード機能を実装する際は、セキュリティに注意を払うことが重要です。
実装後は、必ず動作確認を行い、期待通りに機能することを確認しましょう。

この基本的な実装を土台に、プロジェクトの要件に合わせてカスタマイズしていくことができます。ファイルアップロード機能は多くのWebアプリケーションで必要とされる機能であり、この知識が皆様のプロジェクトに役立つことを願っています。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?