FastAPI ialah rangka kerja web moden berprestasi tinggi yang menyediakan cara yang bersih dan cekap untuk membina API. Memuat naik fail ialah ciri asas yang diperlukan dalam banyak aplikasi web. Untuk memudahkan ini, FastAPI menawarkan berbilang pilihan untuk pengendalian muat naik fail.
Dalam senario tertentu, apabila memuat naik fail mengikut dokumentasi FastAPI, pembolehubah file2store secara konsisten kekal kosong. Isu ini berterusan walaupun terdapat percubaan untuk menggunakan pendekatan UploadFile atau bait Python.
Langkah-langkah berikut boleh diambil untuk menyelesaikan isu ini:
1. Pasang Python-Multipart
FastAPI menggunakan data borang untuk menghantar fail yang dimuat naik. Memasang "python-multipart" memastikan fail yang dimuat naik dikendalikan dengan betul.
pip install python-multipart
2. Gunakan Pengendalian Fail Mesra Memori
FastAPI menggunakan objek SpooledTemporaryFile untuk menyimpan fail yang dimuat naik dalam memori. Jika saiz fail melebihi 1 MB, ia ditulis pada fail sementara pada cakera. Untuk fail besar, pertimbangkan pilihan berikut:
3. Elakkan Menyekat Titik Akhir
Apabila mengendalikan muat naik fail, fungsi titik akhir harus ditakrifkan dengan def dan bukannya async def. Ini menghalang pelayan daripada menyekat sementara menunggu operasi fail selesai.
4. Benarkan Pemindahan Data Tambahan
Jika anda perlu menghantar data bersama-sama dengan muat naik fail, semak jawapan yang disediakan untuk panduan.
5. Fahami Perbezaan Titik Akhir
Kenal pasti perbezaan antara titik akhir def dan tak segerak serta implikasinya untuk pengendalian fail.
Pertimbangkan perkara berikut coretan kod sebagai contoh:
from fastapi import File, UploadFile @app.post("/upload") def upload(file: UploadFile = File(...)): try: contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "Error uploading file"} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
Kod ini mengendalikan muat naik fail dan menyimpan kandungan dalam fail dengan nama yang sama dengan fail yang dimuat naik. Jika anda menghadapi sebarang masalah, rujuk sumber yang disediakan untuk mendapatkan bantuan lanjut.
Atas ialah kandungan terperinci Mengapa pembolehubah muat naik fail FastAPI saya sentiasa kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!