問題:
嘗試根據 FastAPI 上傳文件時官方文件中,file2store 變數始終為空。成功檢索文件位元組的情況很少見,但這並不常見。
解:
1。安裝Python-Multipart:
要啟用檔案上傳(作為「表單資料」傳輸),請安裝python-multipart(如果尚未安裝):
pip install python-multipart
2.使用.file 屬性進行單一檔案上傳:
使用UploadFile物件的 .file 屬性取得實際的 Python 檔案(即 SpooledTemporaryFile)。這允許您呼叫 .read() 和 .close() 等方法。
範例:
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.處理大檔案:
如果檔案超過 1MB 記憶體限制,請使用區塊。根據需要調整區塊大小。
4.非同步讀取/寫入:
如果您的端點需要 async def,請使用非同步方法來讀取寫入檔案內容。
5.上傳多個文件:
@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. HTML 表單示例:
請參閱提供的連結以取得用於上傳檔案的HTML 表單範例。
以上是為什麼我的 FastAPI 檔案上傳總是空的,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!