0Pricing
FastAPI Backend Development Bootcamp · Ders

Form Verileri ve Dosya Yüklemeleri

Geleneksel HTML form verilerini işleyin ve FastAPI'nin yerleşik özelliklerini kullanarak dosya yüklemeleri uygulayın.

Form Verileri ve Dosya Yüklemeleri, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

Form Data Basics

Bir web formu (giriş veya kayıt sayfası gibi) doldurup "gönder" düğmesine tıkladığınızda, girdiğiniz veriler genellikle **form verisi** olarak gönderilir. Bu, tarayıcıların bir sunucuya bilgi göndermesinin geleneksel bir yoludur ve istek gövdesinde JSON göndermekten farklıdır. Form verisi iki ana şekilde gönderilebilir: * application/x-www-form-urlencoded: Basit anahtar-değer çiftleri için. * multipart/form-data: Dosyalar söz konusu olduğunda veya daha büyük, daha karmaşık veriler için kullanılır.

FastAPI's Form Dependency

FastAPI, fastapi'den Form bağımlılığını kullanarak form verilerini işlemeyi kolaylaştırır. Query veya Path parametrelerine benzer şekilde çalışır, ancak FastAPI'ye veriyi istek gövdesinde form alanları olarak beklemesini söyler. Şu şekilde içe aktarırsınız: from fastapi import FastAPI, Form.

Basic Form Endpoint Example

Kullanıcı adı ve şifreyi form verisi olarak kabul eden bir uç nokta oluşturalım. username ve password değerlerinin neden Form(...) ile açıkça işaretlendiğine dikkat edin. Bu, FastAPI'ye bu değerleri JSON veya sorgu parametreleri olarak değil, form gövdesinden ayrıştırmasını söyler.
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

Bu uç noktayı curl gibi araçları kullanarak veya basit bir HTML formu oluşturarak test edebilirsiniz. curl içindeki -d bayrağı form verilerini gönderir. Önceki sahnedeki FastAPI uygulamanızın çalıştığından emin olun!
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

Dosya yükleme (görüntüler, belgeler veya videolar gibi) yaygın bir web görevidir. Bu tür veriler multipart/form-data kodlaması kullanılarak gönderilir.

FastAPI, bu yüklemeleri verimli bir şekilde ele almak için özel araçlar sağlayarak dosya içeriklerine ve meta verilere erişmenizi sağlar.

FastAPI's UploadFile

Dosya yüklemeleri için FastAPI, File bağımlılığı ile birlikte UploadFile sınıfını (fastapi'den) kullanır.

Bir parametreyi File(...) ile bildirip tür ipucu olarak UploadFile belirttiğinizde, FastAPI dosya akışını yönetir.

  • filename: Yüklenen dosyanın adı.
  • content_type: Dosyanın MIME türü (örneğin, image/jpeg).
  • file: İçeriğini okumanıza olanak tanıyan bir SpooledTemporaryFile nesnesi.
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

UploadFile aldıktan sonra içeriğini okuyabilir ve yerel bir diske veya bulut depolama alanına kaydedebilirsiniz. İşte yerel olarak nasıl kaydedileceği. Dosya işlemleri sırasında olası hataları ele almayı unutmayın.
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

Peki ya birden fazla dosyayı aynı anda yüklemeniz gerekirse? FastAPI, bir parametreyi UploadFile listesi olarak tanımlamanıza izin vererek bunu destekler.

Listelerdeki her dosya, daha sonra tek tek işleyebileceğiniz bir UploadFile nesnesi olacaktır.

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

Tekil dosyalara benzer şekilde, UploadFile nesneleri listesi üzerinde yineleme yapabilir ve her birini kaydedebilirsiniz. Bu, fotoğraf galerileri veya belge yüklemeleri için kullanışlıdır. Gerçek bir uygulamada her zaman uygun hata işleme ve güvenli dosya depolama uygulamaları kullandığınızdan emin olun.
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

Form verilerini ve dosya yüklemelerini işlemeyi öğrendiniz. Bilginizi test edelim!

Lesson Summary

Harika bir iş çıkardınız! Bu derste, FastAPI'de geleneksel form verileri ve sağlam dosya yüklemeleriyle nasıl başa çıkılacağını öğrendiniz.
  • Basit anahtar-değer form alanları için Form(...) kullandık.
  • Tekli ve çoklu dosya yüklemeleri için UploadFile ve File(...) öğelerini inceledik.
  • Yüklenen dosyaları sunucunuza kaydetmeyi öğrendiniz.
Bu teknikler, etkileşimli web uygulamaları oluşturmak için çok önemlidir. Pratik yapmaya devam edin!

Sıkça Sorulan Sorular

“Form Verileri ve Dosya Yüklemeleri” dersi ücretsiz mi?

Evet — “Form Verileri ve Dosya Yüklemeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“Form Verileri ve Dosya Yüklemeleri” dersinde ne öğreneceğim?

Geleneksel HTML form verilerini işleyin ve FastAPI'nin yerleşik özelliklerini kullanarak dosya yüklemeleri uygulayın. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Form Verileri ve Dosya Yüklemeleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İstek Gövdesi için Pydantic Modelleri
  2. Yanıt Modelleri ve Durum Kodları
  3. Form Verileri ve Dosya Yüklemeleri
  4. Üst Bilgiler, Çerezler ve Özel Yanıtlar
← FastAPI Backend Development Bootcamp Sayfasına Dön