FastAPI 是一個現代化的高效能 Web 框架,提供了一種乾淨且有效率的方式來建構 API。文件上傳是許多 Web 應用程式所需的基本功能。為了實現這一點,FastAPI 提供了多種檔案上傳處理選項。
在某些情況下,根據 FastAPI 文件上傳檔案時,file2store 變數始終保持為空。儘管嘗試利用 Python 的 UploadFile 或 bytes 方法,此問題仍然存在。
可以採取以下措施來解決此問題:
1.安裝Python-Multipart
FastAPI 使用表單>FastAPI 使用表單資料傳輸上傳的檔案。安裝「python-multipart」可確保正確處理上傳的檔案。
pip install python-multipart
2.使用記憶體友善的檔案處理
FastAPI 使用 SpooledTemporaryFile 物件將上傳的檔案儲存在記憶體中。如果檔案大小超過 1 MB,則會將其寫入磁碟上的暫存檔案。對於大文件,請考慮以下選項:
3.避免阻塞端點
處理檔案上傳時,應使用 def 而非 async def 定義端點函數。這可以防止伺服器在等待檔案操作完成時阻塞。
4.允許額外數據傳輸
如果您需要在上傳文件的同時傳輸數據,請查看提供的答案以獲取指導。
5.了解端點差異
熟悉 def 和 async def 端點之間的差異及其對檔案處理的影響。
考慮以下內容以程式碼片段為例:
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}"}
此程式碼處理檔案上傳並儲存內容在與上傳檔案同名的檔案中。如果您遇到任何問題,請查閱提供的資源以獲得進一步協助。
以上是為什麼我的 FastAPI 檔案上傳變數始終為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!