Memuat Naik Fail dengan FastAPI Menggunakan form-data dan SpooledTemporaryFile
Untuk memuat naik fail menggunakan FastAPI dengan multipart/form-data, adalah disyorkan untuk memasang python-multipart sebagai fail berbilang bahagian dihantar melalui form-data.
pip install python-multipart
Berikut ialah contoh yang dipertingkatkan untuk memuat naik fail menggunakan FastAPI:
from fastapi import File, UploadFile from typing import List @app.post("/upload") def upload(file: UploadFile = File(...)): try: # Using file.file for synchronous operations (e.g., opening a file on disk) contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "An error occurred while uploading the file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
Jika anda perlu memproses fail yang lebih besar dalam ketulan, pertimbangkan untuk membaca fail dalam penambahan yang lebih kecil . Anda boleh sama ada menggunakan gelung manual:
@app.post("/upload") def upload(file: UploadFile = File(...)): try: with open(file.filename, 'wb') as f: while contents := file.file.read(1024 * 1024): f.write(contents) except Exception: return {"message": "An error occurred while uploading the file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
Atau, gunakan kaedah shutil.copyfileobj(), yang membaca dan menulis data dalam ketulan:
from shutil import copyfileobj @app.post("/upload") def upload(file: UploadFile = File(...)): try: with open(file.filename, 'wb') as f: copyfileobj(file.file, f) except Exception: return {"message": "An error occurred while uploading the file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
Nota Tambahan :
Atas ialah kandungan terperinci Bagaimana untuk Cekap Muat Naik Fail ke Pelayan FastAPI Menggunakan `form-data`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!