Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah muat naik fail FastAPI saya sentiasa kosong, dan bagaimana saya boleh membetulkannya?
Masalah:
Apabila cuba memuat naik fail menggunakan FastAPI mengikut dokumentasi rasmi, pembolehubah file2store sentiasa kosong. Kejadian yang jarang berlaku bagi perolehan bait fail yang berjaya berlaku, tetapi ini jarang berlaku.
Penyelesaian:
1. Pasang Python-Multipart:
Untuk mendayakan muat naik fail, yang dihantar sebagai "data borang," pasang python-multipart jika anda belum melakukannya:
pip install python-multipart
2. Gunakan Atribut .file untuk Muat Naik Fail Tunggal:
Gunakan atribut .file objek UploadFile untuk mendapatkan fail Python sebenar (iaitu, SpooledTemporaryFile). Ini membolehkan anda memanggil kaedah seperti .read() dan .close().
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}"}
3. Mengendalikan Fail Besar:
Gunakan ketulan jika fail melebihi had memori 1MB. Laraskan saiz bongkah mengikut keperluan.
4. Pembacaan/Penulisan Asynchronous:
Jika titik akhir anda memerlukan async def, gunakan kaedah tak segerak untuk membaca dan menulis kandungan fail.
5. Muat Naik Berbilang Fail:
@app.post("/upload") def upload(files: List[UploadFile] = File(...)): for file in files: try: contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "Error uploading file(s)."} finally: file.file.close() return {"message": f"Successfully uploaded {[file.filename for file in files]}."}
6. Contoh Borang HTML:
Rujuk pautan yang disediakan untuk contoh borang HTML untuk memuat naik fail.
Atas ialah kandungan terperinci Mengapakah muat naik fail FastAPI saya sentiasa kosong, dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!