Heim >Backend-Entwicklung >Python-Tutorial >Wie löse ich Probleme beim Hochladen leerer Dateien in FastAPI?

Wie löse ich Probleme beim Hochladen leerer Dateien in FastAPI?

DDD
DDDOriginal
2024-12-20 14:48:10738Durchsuche

How to Solve Empty File Upload Issues in FastAPI?

Wie lade ich eine Datei mit FastAPI hoch?

Problem:
Bei Verwendung von FastAPI zum Hochladen einer Datei entsprechend Laut offizieller Dokumentation bleibt die Variable file2store erhalten leer.

Ursache:

  • Stellen Sie sicher, dass python-multipart installiert ist.
  • Bei Verwendung von Def-Endpunkten können Sie die .file verwenden Attribut, um auf die eigentliche Python-Datei zuzugreifen und ihre Methoden synchron aufzurufen.
  • Bedenken Sie bei der Verwendung asynchroner Def-Endpunkte asynchrone Dateivorgänge.
  • Passen Sie die Blockgröße entsprechend an, wenn Dateien zu groß für den Speicher sind.

Lösung:

App. py:

from fastapi import File, UploadFile

@app.post("/create_file")
def create_file(file: UploadFile = File(...)):
    try:
        contents = file.file.read()
        # store contents to the database
    except Exception:
        return {"message": "Error uploading file"}
    finally:
        file.file.close()
    return {"message": f"Successfully uploaded {file.filename}"}

Alternative für Async Endpunkte:

@app.post("/create_file")
async def create_file(file: UploadFile = File(...)):
    try:
        contents = await file.read()
        # store contents to the database
    except Exception:
        return {"message": "Error uploading file"}
    finally:
        await file.close()
    return {"message": f"Successfully uploaded {file.filename}"}

Mehrere Dateien hochladen:

from fastapi import File, UploadFile
from typing import List

@app.post("/upload")
def upload(files: List[UploadFile] = File(...)):
    for file in files:
        try:
            contents = file.file.read()
            # store contents to the database
        except Exception:
            return {"message": "Error uploading file(s)"}
        finally:
            file.file.close()
    return {"message": f"Successfully uploaded {[file.filename for file in files]}"}

Anfrage vom Python-Skript:

requests.post(url="SERVER_URL/create_file", files={"file": (f.name, f, "multipart/form-data")})

Das obige ist der detaillierte Inhalt vonWie löse ich Probleme beim Hochladen leerer Dateien in FastAPI?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn