Request Forms ve Files¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâyı daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
File ve Form kullanarak aynı anda hem dosyaları hem de form alanlarını tanımlayabilirsiniz.
Bilgi
Yüklenen dosyaları ve/veya form verisini almak için önce python-multipart paketini kurun.
Bir virtual environment oluşturduğunuzdan, onu aktive ettiğinizden ve ardından paketi kurduğunuzdan emin olun, örneğin:
$ pip install python-multipart
File ve Form Import Edin¶
from typing import Annotated
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: Annotated[bytes, File()],
fileb: Annotated[UploadFile, File()],
token: Annotated[str, Form()],
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(), fileb: UploadFile = File(), token: str = Form()
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
File ve Form Parametrelerini Tanımlayın¶
Dosya ve form parametrelerini, Body veya Query için yaptığınız şekilde oluşturun:
from typing import Annotated
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: Annotated[bytes, File()],
fileb: Annotated[UploadFile, File()],
token: Annotated[str, Form()],
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(), fileb: UploadFile = File(), token: str = Form()
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
Dosyalar ve form alanları form data olarak upload edilir ve siz de dosyaları ve form alanlarını alırsınız.
Ayrıca bazı dosyaları bytes olarak, bazılarını da UploadFile olarak tanımlayabilirsiniz.
Uyarı
Bir path operation içinde birden fazla File ve Form parametresi tanımlayabilirsiniz; ancak request'in body'si application/json yerine multipart/form-data ile encode edileceği için, JSON olarak almayı beklediğiniz Body alanlarını aynı anda tanımlayamazsınız.
Bu FastAPI kısıtı değildir; HTTP protokolünün bir parçasıdır.
Özet¶
Aynı request içinde hem veri hem de dosya almanız gerektiğinde File ve Form'u birlikte kullanın.