首頁  >  文章  >  後端開發  >  如何使用 FastAPI 發布資料後下載檔案?

如何使用 FastAPI 發布資料後下載檔案?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 10:04:30786瀏覽

How to Download a File after POSTing Data with FastAPI?

如何使用 FastAPI 在發布資料後下載檔案?

使用 FastAPI 時,在發布資料後下載檔案圍繞著利用檔案回應類別。要實現此目的:

  1. 定義表單資料端點:使用 Form 關鍵字在端點中定義預期的表單資料。確保在 Form(...) 中按照要求設定所需的參數。
  2. 處理並產生回應:處理接收到的資料並產生檔案後,使用 FileResponse 返回檔案傳送給使用者。
  3. 設定 Content-Disposition 標頭: 若要啟動下載,請使用「attachment」參數在 FileResponse 中設定 Content-Disposition 標頭。
  4. 傳回 FileResponse: 將 FileResponse 傳送回客戶端,確保標頭正確以觸發檔案下載。

這裡有一個範例:

<code class="python">@app.post("/download")
async def download_file(request: Request):
    if request.method == "POST":
        form = await request.form()
        if form["message"] and form["language"]:
            # Process the data and generate the file here
            file_path = "path/to/file.mp3"
            headers = {"Content-Disposition": f"attachment; filename=downloaded_file.mp3"}
            return FileResponse(file_path, headers=headers, media_type="audio/mp3")</code>

請記住,如果您希望端點同時處理GET 和POST 請求,請使用@app.api_route() 和methods=[ "GET", "POST"] 或使用@app.post() 和@app 定義單獨的端點。 get().

此外,如果您打算下載多個檔案或需要更大的靈活性,請考慮使用其他概念,例如:

  • StreamingResponse: 來處理分塊的大文件,請使用StreamingResponse 而不是FileResponse。
  • JavaScript 和 Fetch API: 在前端,利用 JavaScript 和 Fetch API 啟動檔案下載程序。
  • 鍵值儲存/資料庫:要同時處理多個使用者和文件,請考慮使用鍵值儲存或資料庫將檔案路徑對應到唯一識別碼。

以上是如何使用 FastAPI 發布資料後下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn