Kodeloka
  1. Kodeloka
  2. Kelas FastAPI
  3. Materi

Data & Models ยท Modul 6 dari 24

Form Data & Asynchronous File Uploads

Menerima form-data HTML biasa dengan Form() dan mengunggah berkas media (gambar profil) dengan UploadFile.

๐ŸŽฏ Poin-Poin Utama Modul Ini:
  • Menginstal package python-multipart untuk menangani form-data
  • UploadFile menggunakan penanganan berbasis file spooled di memori/disk yang sangat efisien
  • Metode async .read(), .write(), .seek()

๐Ÿ“ Upload File & Form Processing

Untuk mengunggah gambar profil postingan atau dokumen PDF, FastAPI menyediakan kelas khusus UploadFile yang tidak menghabiskan RAM server.

๐Ÿ’ป Kode Form Data & File Saving

main.py
import shutil
from fastapi import FastAPI, File, UploadFile, Form

app = FastAPI()

@app.post("/upload-avatar/")
async def upload_avatar(
    username: str = Form(...),
    file: UploadFile = File(...)
):
    file_path = f"static/avatars/{file.filename}"
    with open(file_path, "wb") as buffer:
        shutil.copyfileobj(file.file, buffer)
    return {"username": username, "avatar_url": file_path}