Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa pembolehubah file2store saya kosong apabila memuat naik fail dengan FastAPI?

Mengapa pembolehubah file2store saya kosong apabila memuat naik fail dengan FastAPI?

Linda Hamilton
Linda Hamiltonasal
2024-12-14 02:52:11676semak imbas

Why is my file2store variable empty when uploading files with FastAPI?

Cara Menyelesaikan Pembolehubah File2Store Kosong Apabila Memuat Naik Fail dengan FastAPI

Apabila cuba memuat naik fail melalui FastAPI, anda mungkin menghadapi pembolehubah file2store kosong walaupun mengikut garis panduan dokumentasi. Untuk menangani isu ini, beberapa langkah boleh diambil:

1. Pasang python-multipart:

Pastikan python-multipart dipasang, kerana ia perlu untuk menghuraikan fail yang dimuat naik sebagai data borang. Gunakan arahan berikut:

pip install python-multipart

2. Gunakan .file Attribute and def Endpoint:

from fastapi import File, UploadFile

@app.post("/upload")
def upload(file: UploadFile = File(...)):
    # Get actual Python file and read/write contents
    contents = file.file.read()
    with open(file.filename, 'wb') as f:
        f.write(contents)

Nota: Untuk mengelakkan penyekatan pelayan, tentukan titik akhir dengan def dan bukannya async def dalam kes ini.

3. Bacaan/Penulisan Asynchronous dengan async def Endpoint:

Jika anda perlu menggunakan async def, gunakan kaedah tak segerak untuk membaca dan menulis kandungan, seperti yang ditunjukkan dalam jawapan ini.

4. Mengendalikan Potongan untuk Fail Besar:

Jika fail yang dimuat naik adalah lebih besar daripada RAM yang tersedia, muatkan fail ke dalam memori dalam ketulan dan proses data satu ketul pada satu masa, seperti yang ditunjukkan dalam contoh kod yang disediakan .

Memuat Naik Berbilang Fail:

Untuk memuat naik berbilang fail sebagai senarai dalam FastAPI, ikut garis panduan ini:

from fastapi import File, UploadFile
from typing import List

# For a single file, use:
# @app.post("/upload")
def upload(file: List[UploadFile] = File(...)):

# For a list of files, use:
# @app.post("/upload")
async def upload_multiple(files: List[UploadFile] = File(...)):

Ringkasnya, dengan memasang python-multipart, menggunakan atribut .file objek UploadFile, mengendalikan ketulan untuk fail besar dan mempertimbangkan operasi tak segerak jika perlu, anda boleh menyelesaikan isu pembolehubah file2store kosong dengan berkesan apabila memuat naik fail dengan FastAPI.

Atas ialah kandungan terperinci Mengapa pembolehubah file2store saya kosong apabila memuat naik fail dengan FastAPI?. 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