Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa pembolehubah muat naik fail FastAPI saya sentiasa kosong?

Mengapa pembolehubah muat naik fail FastAPI saya sentiasa kosong?

Susan Sarandon
Lepaskan: 2024-12-08 08:20:10
asal
532 orang telah melayarinya

Why is my FastAPI file upload variable always empty?

Bagaimana hendak Muat Naik Fail menggunakan FastAPI?

Latar Belakang

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.

Isu

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.

Penyelesaian

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

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:

  • Baca Fail dalam Potongan: Pecahkan fail kepada ketulan yang lebih kecil dan proseskannya secara berurutan. Ini mengurangkan penggunaan memori tetapi mungkin memanjangkan masa pemprosesan.
  • Gunakan shutil.copyfileobj(): Gunakan fungsi ini untuk menyalin kandungan fail dalam ketulan yang boleh diurus, meminimumkan penggunaan memori.

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.

Kod Contoh untuk Muat Naik 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}"}
Salin selepas log masuk

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!

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