Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah muat naik fail FastAPI saya sentiasa kosong, dan bagaimana saya boleh membetulkannya?

Mengapakah muat naik fail FastAPI saya sentiasa kosong, dan bagaimana saya boleh membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-09 06:53:06808semak imbas

Why is my FastAPI file upload always empty, and how can I fix it?

Bagaimana hendak Muat Naik Fail menggunakan FastAPI?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn