Formulardata og filuploads
Håndtér traditionelle HTML-formulardata, og implementér filuploads ved hjælp af FastAPI's indbyggede funktioner.
Formulardata og filuploads er en gratis Bootcamp i FastAPI-backendudvikling-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Bootcamp i FastAPI-backendudvikling, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i FastAPI-backendudvikling-kurset indeholder 4 lektioner i alt.
Grundlæggende om formulardata
Når du udfylder en webformular (f.eks. en login- eller registreringsside) og klikker på "send", bliver de data, du indtastede, ofte sendt som formulardata.
Det er en traditionel måde, hvorpå browsere sender oplysninger til en server, og den adskiller sig fra at sende JSON i en forespørgselskrop.
Formulardata kan sendes på to primære måder:
application/x-www-form-urlencoded: Til simple nøgleværdi-par.multipart/form-data: Bruges, når der indgår filer, eller til større og mere komplekse data.
FastAPIs Form-afhængighed
FastAPI gør det nemt at håndtere formulardata ved hjælp af Form-afhængigheden fra fastapi.
Den fungerer på samme måde som parametrene Query eller Path, men fortæller FastAPI, at dataene skal forventes i forespørgselskroppen som formularfelter.
Du importerer den sådan her: from fastapi import FastAPI, Form.
Eksempel på et grundlæggende formularendepunkt
Lad os oprette et endepunkt, der accepterer et brugernavn og en adgangskode som formulardata. Bemærk, hvordan username og password eksplicit markeres med Form(...).
Det fortæller FastAPI, at de skal fortolkes fra formularens krop og ikke som JSON eller forespørgselsparametre.
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)Arbejde med formulardata
Du kan teste dette endepunkt med værktøjer som curl eller ved at oprette en simpel HTML-formular. Flaget -d i curl sender formulardata.
Sørg for, at din FastAPI-applikation fra den forrige scene kører!
curl -X POST "http://127.0.0.1:8000/login/" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=coddy&password=secret"Forklaring af filuploads
Upload af filer (f.eks. billeder, dokumenter eller videoer) er en almindelig webopgave. Denne type data sendes ved hjælp af kodningen multipart/form-data.
FastAPI tilbyder særlige værktøjer til effektiv håndtering af disse uploads, så du kan få adgang til filindhold og metadata.
FastAPIs UploadFile
Til filuploads bruger FastAPI klassen UploadFile (fra fastapi) sammen med afhængigheden File.
Når du erklærer en parameter med File(...) og angiver dens type som UploadFile, håndterer FastAPI filstrømmen.
filename: Navnet på den uploadede fil.content_type: Filens MIME-type (f.eks.image/jpeg).file: Et SpooledTemporaryFile-objekt, som giver dig mulighed for at læse indholdet.
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)Lagring af én uploadet fil
Efter modtagelse af en UploadFile kan du læse dens indhold og gemme det på en lokal disk eller i cloudlagring. Sådan gemmer du den lokalt.
Husk at håndtere mulige fejl under filhandling.
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)Upload af flere filer
Hvad gør du, hvis du skal uploade flere filer på én gang? FastAPI understøtter dette ved at lade dig definere en parameter som en liste af UploadFile.
Hver fil på listen er et UploadFile-objekt, som du derefter kan behandle individuelt.
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)Lagring af flere uploads
Ligesom med enkeltfiler kan du gennemløbe listen med UploadFile-objekter og gemme hver enkelt. Det er nyttigt til fotogallerier eller upload af dokumenter.
Sørg altid for korrekt fejlhåndtering og sikker lagring af filer i en rigtig applikation.
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)Tjek af formularer og filer
Du har lært om håndtering af formulardata og filuploads. Lad os teste din forståelse!
Opsummering af lektionen
Godt arbejde! I denne lektion lærte du grundigt, hvordan du håndterer traditionelle formulardata og robuste filuploads i FastAPI.
- Vi brugte
Form(...)til simple nøgleværdi-felter i formularer. - Vi undersøgte
UploadFileogFile(...)til upload af én eller flere filer. - Du lærte at gemme uploadede filer på din server.
Disse teknikker er afgørende for at bygge interaktive webapplikationer. Bliv ved med at øve dig!
Lær Bootcamp i FastAPI-backendudvikling med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 21
- Lektioner
- 84
Ofte stillede spørgsmål
Er lektionen “Formulardata og filuploads” gratis?
Ja — alle 3 lektioner i læringssporet Bootcamp i FastAPI-backendudvikling, inklusive “Formulardata og filuploads”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Bootcamp i FastAPI-backendudvikling-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Formulardata og filuploads”?
Håndtér traditionelle HTML-formulardata, og implementér filuploads ved hjælp af FastAPI's indbyggede funktioner. Du øver dig i Bootcamp i FastAPI-backendudvikling med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Bootcamp i FastAPI-backendudvikling?
Der kræves ingen tidligere erfaring. Bootcamp i FastAPI-backendudvikling på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Formulardata og filuploads”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Bootcamp i FastAPI-backendudvikling-lektion?
Ja. Alle Bootcamp i FastAPI-backendudvikling-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Pydantic-modeller til request body
- Response-modeller og statuskoder
- Formulardata og filuploads
- Headers, cookies og brugerdefinerede responser