Hochladen von Dateien mit FastAPI unter Verwendung von form-data und SpooledTemporaryFile
Um Dateien mit FastAPI mit multipart/form-data hochzuladen, wird die Installation empfohlen Python-Multipart, da Multipart-Dateien per gesendet werden form-data.
pip install python-multipart
Hier ist ein verbessertes Beispiel für das Hochladen einer Datei mit 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}"}
Wenn Sie größere Dateien in Blöcken verarbeiten müssen, sollten Sie die Datei in kleineren Schritten lesen . Sie können entweder eine manuelle Schleife verwenden:
@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}"}
Oder verwenden Sie die Methode „shutil.copyfileobj()“, die Daten in Blöcken liest und schreibt:
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}"}
Zusätzliche Hinweise :
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien mithilfe von „form-data' effizient auf einen FastAPI-Server hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!