Apabila membangunkan aplikasi web yang perlu menerima input pengguna, memprosesnya dan kemudian menyediakan fail untuk dimuat turun, keupayaan untuk memudahkan pertukaran ini adalah penting. FastAPI menyediakan rangka kerja yang teguh untuk membina aplikasi sedemikian dan panduan ini akan meneroka cara memuat turun fail dengan berkesan selepas memproses data POST.
Pertama, tentukan titik akhir dalam aplikasi FastAPI anda untuk mengendalikan permintaan muat turun fail. Titik akhir ini akan menerima laluan fail dan mengembalikan fail sebagai respons. Contoh pelaksanaan menggunakan kelas FastAPI FileResponse:
<code class="python">from fastapi import FastAPI, FileResponse, Request from fastapi.responses import FileResponse app = FastAPI() @app.post('/download-file') async def download_file(request: Request, user_id: int = Form(...)): file_path = 'path/to/file.mp3' return FileResponse(file_path, media_type='audio/mp3', filename='output.mp3')</code>
Dalam kod ini, pembolehubah laluan_fail hendaklah digantikan dengan laluan sebenar ke fail yang perlu dimuat turun. Parameter media_type dan nama fail menentukan jenis fail dan nama di bawahnya ia akan dimuat turun.
Selepas menentukan titik akhir, masukkan borang HTML ke bahagian hadapan anda yang mencetuskan permintaan POST ke titik akhir /download-file dan menyediakan parameter user_id yang diperlukan:
<code class="html"><form action="/download-file" method="post"> <input type="text" name="user_id" placeholder="Enter user ID"> <input type="submit" value="Download File"> </form></code>
Apabila borang diserahkan, permintaan POST dengan user_id yang ditentukan akan dihantar ke /download-file titik akhir, yang kemudiannya akan memproses permintaan dan mengembalikan fail untuk dimuat turun.
Jika fail yang hendak dimuat turun adalah sangat besar, pertimbangkan untuk menggunakan kelas StreamingResponse dalam FastAPI:
<code class="python">from fastapi import FastAPI, Response, StreamingResponse @app.post('/stream-large-file') async def download_large_file(request: Request, user_id: int = Form(...)): file_path = 'path/to/large_file.mp3' async def iter_file(): with open(file_path, 'rb') as f: while chunk := f.read(1024): yield chunk return StreamingResponse(iter_file(), media_type='audio/mp3', filename='output.mp3')</code>
Di sini, fungsi iter_file membaca fail dalam ketulan untuk mengurangkan penggunaan memori dan memudahkan penstriman fail.
Dengan mengikut langkah yang digariskan di atas, anda boleh mencipta aplikasi FastAPI yang mengendalikan muat turun fail dengan lancar selepas operasi POST. Ini memperkasakan aplikasi anda untuk menawarkan fungsi muat turun, memperkayakan pengalaman pengguna dan menjadikannya lebih mudah untuk mengakses fail yang dijana.
Atas ialah kandungan terperinci Bagaimana untuk Muat Turun Fail Selepas Menyiarkan Data menggunakan FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!