<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用Form表單上傳檔案,fastapi使用File
獲取上傳的檔案。
指定了引數型別是bytes:file: bytes = File()
,此時會將檔案內容全部讀取到記憶體,比較適合小檔案。
使用File
需要提前安裝 python-multipart
from fastapi import FastAPI, File app = FastAPI() @app.post("/files/") async def create_file(file: bytes = File()): return {"file_size": len(file)}
只要在路徑操作函數中宣告了變數的型別是bytes
且使用了File,
則fastapi會將上傳檔案的內容全部去讀到引數中。
對於大檔案,不適合將檔案內容全部讀取到記憶體中,此時使用UploadFile
from fastapi import FastAPI, UploadFile app = FastAPI() @app.post("/uploadfile/") async def create_upload_file(file: UploadFile): return {"filename": file.filename}
和bytes
相比,使用UploadFile
有如下好處:
File()
作為路徑操作函數中引數的預設值除了這四個基礎屬性外,UploadFile還有三個async
方法:
# 獲取檔案內容 contents = await myfile.read()
設定預設值是None即可
from typing import Union from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/files/") async def create_file(file: Union[bytes, None] = File(default=None)): if not file: return {"message": "No file sent"} else: return {"file_size": len(file)} @app.post("/uploadfile/") async def create_upload_file(file: Union[UploadFile, None] = None): if not file: return {"message": "No upload file sent"} else: return {"filename": file.filename}
引數的引數的型別是列表:列表元素是bytes或者UploadFile
from typing import List from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/files/") async def create_files(files: List[bytes] = File()): return {"file_sizes": [len(file) for file in files]} @app.post("/uploadfiles/") async def create_upload_files(files: List[UploadFile]): return {"filenames": [file.filename for file in files]}
1.FastAPI簡介
FastAPI是什麼
FastAPI是一個現代的,快速(高效能)python web框架。基於標準的python型別提示,使用python3.6+構建API的Web框架。
FastAPI的主要特點如下:
FastAPI 站在巨人的肩膀上:
環境準備
安裝fastapi
pip install fastapi
對於生產環境,還需要一個ASGI伺服器,如Uvicorn或Hypercorn
pip install "uvicorn[standard]"
入門範例程式
新建一個main.py,編寫如下程式:
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
執行程式:
uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
到此這篇關於Python利用fastapi實現上傳檔案的文章就介紹到這了,更多相關Python fastapi上傳檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45