Data Formulir dan Pengunggahan Berkas
Tangani data formulir HTML tradisional dan implementasikan pengunggahan berkas menggunakan kemampuan bawaan FastAPI.
Data Formulir dan Pengunggahan Berkas adalah pelajaran FastAPI Backend Development Bootcamp gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar FastAPI Backend Development Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus FastAPI Backend Development Bootcamp mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Form Data Basics
When you fill out a web form (like a login or registration page) and click "submit," the data you entered is often sent as form data.
This is a traditional way for browsers to send information to a server, different from sending JSON in a request body.
Form data can be sent in two main ways:
application/x-www-form-urlencoded: For simple key-value pairs.multipart/form-data: Used when files are involved, or for larger, more complex data.
FastAPI's Form Dependency
FastAPI makes handling form data easy using the Form dependency from fastapi.
It works similarly to Query or Path parameters, but it tells FastAPI to expect the data in the request body as form fields.
You import it like this: from fastapi import FastAPI, Form.
Basic Form Endpoint Example
Let's create an endpoint that accepts a username and password as form data. Notice how username and password are explicitly marked with Form(...).
This tells FastAPI to parse them from the form body, not as JSON or query parameters.
from fastapi import FastAPI, Form
import uvicorn
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username, "message": "Login successful!"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Interacting with Form Data
You can test this endpoint using tools like curl or by creating a simple HTML form. The -d flag in curl sends form data.
Make sure your FastAPI application from the previous scene is running!
curl -X POST "http://127.0.0.1:8000/login/" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=coddy&password=secret"File Uploads Explained
Uploading files (like images, documents, or videos) is a common web task. This type of data is sent using multipart/form-data encoding.
FastAPI provides special tools to handle these uploads efficiently, allowing you to access file contents and metadata.
FastAPI's UploadFile
For file uploads, FastAPI uses the UploadFile class (from fastapi) along with the File dependency.
When you declare a parameter with File(...) and type-hint it as UploadFile, FastAPI handles the file stream.
filename: The name of the uploaded file.content_type: The file's MIME type (e.g.,image/jpeg).file: A SpooledTemporaryFile object, allowing you to read its contents.
from fastapi import FastAPI, File, UploadFile
import uvicorn
app = FastAPI()
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
return {"filename": file.filename, "content_type": file.content_type}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Saving One Uploaded File
After receiving an UploadFile, you can read its content and save it to a local disk or cloud storage. Here's how to save it locally.
Remember to handle potential errors during file operations.
from fastapi import FastAPI, File, UploadFile
import uvicorn
import shutil
import os
app = FastAPI()
# Ensure the 'files' directory exists
os.makedirs("files", exist_ok=True)
@app.post("/uploadandsave/")
async def upload_and_save_file(file: UploadFile = File(...)):
file_location = f"files/{file.filename}"
with open(file_location, "wb+") as file_object:
shutil.copyfileobj(file.file, file_object)
return {"message": f"File '{file.filename}' saved at '{file_location}'"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Uploading Many Files
What if you need to upload several files at once? FastAPI supports this by allowing you to define a parameter as a list of UploadFile.
Each file in the list will be an UploadFile object, which you can then process individually.
from fastapi import FastAPI, File, UploadFile
from typing import List
import uvicorn
app = FastAPI()
@app.post("/uploadmultiple/")
async def create_upload_files(files: List[UploadFile] = File(...)):
uploaded_filenames = [file.filename for file in files]
return {"filenames": uploaded_filenames, "message": "Files received!"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Saving Multiple Uploads
Similar to single files, you can iterate through the list of UploadFile objects and save each one. This is useful for photo galleries or document uploads.
Always ensure proper error handling and secure file storage practices in a real application.
from fastapi import FastAPI, File, UploadFile
from typing import List
import uvicorn
import shutil
import os
app = FastAPI()
# Ensure the 'files' directory exists
os.makedirs("files", exist_ok=True)
@app.post("/uploadandsavemultiple/")
async def upload_and_save_multiple_files(files: List[UploadFile] = File(...)):
saved_files = []
for file in files:
file_location = f"files/{file.filename}"
with open(file_location, "wb+") as file_object:
shutil.copyfileobj(file.file, file_object)
saved_files.append(file.filename)
return {"message": f"Successfully uploaded: {', '.join(saved_files)}"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)Form & File Check
You've learned about handling form data and file uploads. Let's test your understanding!
Lesson Summary
Great job! In this lesson, you mastered how to handle traditional form data and robust file uploads in FastAPI.
- We used
Form(...)for simple key-value form fields. - We explored
UploadFileandFile(...)for single and multiple file uploads. - You learned to save uploaded files to your server.
These techniques are crucial for building interactive web applications. Keep practicing!
Belajar FastAPI Backend Development Bootcamp dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 21
- Pelajaran
- 84
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Data Formulir dan Pengunggahan Berkas” gratis?
Ya — teks lengkap “Data Formulir dan Pengunggahan Berkas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus FastAPI Backend Development Bootcamp, upgrade ke CoddyKit PRO. Kursus FastAPI Backend Development Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Data Formulir dan Pengunggahan Berkas”?
Tangani data formulir HTML tradisional dan implementasikan pengunggahan berkas menggunakan kemampuan bawaan FastAPI. Kamu berlatih FastAPI Backend Development Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai FastAPI Backend Development Bootcamp?
Tidak diperlukan pengalaman sebelumnya. FastAPI Backend Development Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Data Formulir dan Pengunggahan Berkas” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran FastAPI Backend Development Bootcamp ini?
Ya. Setiap pelajaran FastAPI Backend Development Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Model Pydantic untuk Isi Permintaan
- Model Respons dan Kode Status
- Data Formulir dan Pengunggahan Berkas
- Header, Cookie, dan Respons Kustom