Wie kehre ich eine Fileresponse (oder eine StreamingResponse) in flet-fastapi zurück?Python

Python-Programme
Guest
 Wie kehre ich eine Fileresponse (oder eine StreamingResponse) in flet-fastapi zurück?

Post by Guest »

Ich versuche tatsächlich, eine Web-App zu erstellen, die einer Person einige Informationen fragt, dann \*. docx mit Jinja bearbeiten und diese \*. docx an die Person als a zurückgeben Download. />

Code: Select all

__pycache__/
.venv/
output/
output/test.docx
main.py
requirements.txt
< /code>
rquirements.txt:
flet-fastapi
flet
uvicorn
pydantic
fastapi
< /code>
Main.py:
from contextlib import asynccontextmanager
import flet as ft
import flet_fastapi
from fastapi import FastAPI
from fastapi.responses import FileResponse

@asynccontextmanager
async def lifespan(app=FastAPI):
await flet_fastapi.app_manager.start()
yield
await flet_fastapi.app_manager.shutdown()

app = FastAPI(lifespan=lifespan)

# I believe that it doesn't matter which endpoint we choose here, since later we mount
# our flet on the root-path. Decorator is here because without it "return FileResponse()"
# does nothing at all.
@app.get("/")
async def dl_test(page: ft.Page):
async def download(e):
return FileResponse(f"output/test.docx", media_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", filename="test.docx")
await page.add_async(ft.OutlinedButton(text="Get file", on_click=download))
await page.update_async()

app.mount("/", flet_fastapi.app(dl_test))
< /code>
Dieser Code ist das minimal reproduzierbare Beispiel.
Um ihn zu reproduzieren, können wir unsere virtuelle Umgebung vorbereiten: < /p>
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
< /code>
und führen Sie es dann aus: < /p>
uvicorn --reload main:app
< /code>
Wenn wir sie ausgeführt haben Feld! Hinweis: Überprüfen Sie, ob  ein gültiger pydantischer Feldtyp ist. Wenn Sie eine Annotation des Rückgabetyps verwenden, die kein gültiges pydantisches Feld ist (z. B. Union [Antwort, Diktat, keine]), können Sie das Erzeugen des Antwortmodells aus der Typ -Annotation mit dem Parameter -Dekorator der Pfadoperation deaktivieren_model = keine.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post