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
Lepaskan: 2024-12-09 06:53:06
asal
813 orang telah melayarinya

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
Salin selepas log masuk

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}"}
Salin selepas log masuk

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]}."}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan