


Bagaimana untuk Muat Turun Fail Selepas Menyiarkan Data dalam FastAPI?
Oct 31, 2024 am 11:03 AMCara Muat Turun Fail Selepas Menyiarkan Data dengan FastAPI
Masalah
Anda sedang mencipta apl web yang mengendalikan input teks, menukarnya kepada pertuturan, dan mengembalikan fail audio untuk dimuat turun. Anda memerlukan pilihan muat turun pada halaman HTML, tetapi anda tidak boleh melaksanakannya dengan betul.
Dalam Flask, persediaan yang serupa boleh dicapai menggunakan fungsi send_file. Bagaimanakah anda meniru fungsi ini dengan FastAPI?
Kod FastAPI dan Contoh HTML
<code class="python">from fastapi import FastAPI, File, Form, UploadFile from fastapi.responses import FileResponse, HTMLResponse from fastapi.templating import Jinja2Templates from gtts import gTTS templates = Jinja2Templates(directory="templates") def text_to_speech(language: str, text: str) -> str: tts = gTTS(text=text, lang=language, slow=False) tts.save("./temp/welcome.mp3") return "Text to speech conversion successful" @app.get("/") def home(request: Request): return templates.TemplateResponse("index.html", {"request": request}) @app.post("/text2speech") async def home(request: Request): if request.method == "POST": form = await request.form() if form["message"] and form["language"]: language = form["language"] text = form["message"] translate = text_to_speech(language, text) path = "./temp/welcome.mp3" value = FileResponse("./temp/welcome.mp3", media_type="audio/mp3") return value</code>
<code class="html"><!doctype html> <title>Download MP3 File</title> <h2>Download a file</h2> <p><a href="{{ url_for('text2speech') }}">Download</a></p></code>
Penyelesaian
Pilihan 1: Gunakan Bentuk kata kunci untuk memastikan parameter yang diperlukan. Daripada menggunakan await request.form() dan menyemak parameter yang diperlukan secara manual, gunakan Form(...) untuk menjadikan parameter wajib. Selepas memproses data yang diterima, gunakan FileResponse untuk mengembalikan fail, menetapkan pengepala Pelupusan Kandungan kepada 'lampiran.'
Pilihan 2: Anda juga boleh menyokong permintaan GET dan POST untuk titik akhir /text2speech dengan menggunakan penghias seperti @app.api_route("/text2speech", method=["GET", "POST"]). Sebagai alternatif, anda boleh menentukan titik akhir yang berasingan dengan @app.get("/text2speech") dan @app.post("/text2speech").
Selain itu, anda boleh menyediakan antara muka JavaScript secara pilihan menggunakan API Ambil untuk memuat turun fail di bahagian hadapan.
Nota:
- Jika anda ingin memulangkan fail besar yang tidak sesuai dengan memori, gunakan StreamingResponse untuk memproses fail dalam ketulan.
- Untuk mengalih keluar fail selepas ia dimuat turun, buat BackgroundTask untuk dijalankan selepas mengembalikan respons.
Atas ialah kandungan terperinci Bagaimana untuk Muat Turun Fail Selepas Menyiarkan Data dalam FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat panas Tag

Artikel Panas

Alat panas Tag

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana saya menggunakan sup yang indah untuk menghuraikan html?

Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks

Cara Bekerja Dengan Dokumen PDF Menggunakan Python

Pengenalan kepada Flask: Menambah halaman kenalan

Cara Cache Menggunakan Redis dalam Aplikasi Django

Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch?
