FastAPI是個現(xiàn)代化的,迅速(性能卓越)pythonweb架構。本文運用fastapi完成上傳圖片作用,文章中的實例編碼解讀詳盡,所需要的可以了解一下
應用File完成文件傳送
應用Form表格上傳圖片,fastapi應用File獲得上傳文檔。
特定了參數類型是bytes:file:bytes=File(),這時會把文件所有載入到內存條,較為適合靜態(tài)資源。
應用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實現(xiàn)文件上傳
對于大文件,不適合將文件內容全部讀取到內存中,此時使用UploadFile
from fastapi import FastAPI,UploadFile ap=FastAPI() app.post("/uploadfile/") async def create_upload_file(file:UploadFile): return{"filename":file.filename}
和bytes對比,應用UploadFile有以下益處:
不用使用File()做為途徑實際操作函數中參數初始值
不把文件信息所有載入到運存中,反而是大批量載入一定數量的數據信息,邊寫邊存電腦硬盤。
能夠獲取文件的數據庫。
該類別的自變量能夠像文檔自變量相同實際操作。
UploadFile的特性
filename:種類是str,用于獲取文件的名稱,例如:myimage.png
content_type:種類是str,用于獲得文件的類型,例如:image/png
file:類文件對象,是個標準化的python文件對象
除開這幾個元素屬性外,UploadFile也有3個async方式:
write,將str或是bytes提到文檔中
read:讀文件
seek:移動光標
close:關閉文件
#獲取文件具體內容 contents=awaitmyfile.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是個現(xiàn)代化的,迅速(性能卓越)pythonweb架構。根據標準化的python類別提醒,應用python3.6+搭建API的Web架構。
FastAPI的主要特征如下所示:
迅速:很高的特性,與NodeJS和Go相當(這一十分感謝Starlette和Pydantic),是速度最快的Python架構其一。
迅速編號:將開發(fā)設計速率增強約200%到300%。
更低的bug:降低大概40%的開發(fā)者人為因素造成錯誤。
形象化:強悍的在線編輯器適用,調節(jié)時長較短。
簡易:便于應用與學習。降低閱讀文章文本文檔的時間也。
代碼簡潔:盡量避免編碼反復。每一個主要參數能夠申明好幾個作用,降低流程的bug。
健碩:生產制造編碼會一鍵生成互動式文本文檔。
根據規(guī)范:根據并徹底適配API的開放標準:OpenAPI和JSON方式。
FastAPI立在巨人的肩膀:
Starlette用以搭建Web構件。
Pydantic用以數據信息一部分。
自然環(huán)境提前準備
組裝fastapi
pipinstallfastapi
對工作環(huán)境,還要1個ASGI網絡服務器,如Uvicorn或Hypercorn
pipinstall"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.
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130280.html
摘要:那在屆有哪些被封神的庫呢,今天就給大家介紹十個堪稱殺手級別的工具包。總之,是一款非常強大且易用的網絡請求庫。地址最好用的框架。圖像處理,該庫是你的不二之選。 Pyt...
摘要:那在屆有哪些被封神的庫呢,今天就給大家介紹十個堪稱殺手級別的工具包。該庫是在之上完善的,自此請求就變得異常的簡單,一行代碼即可搞定。這是最流行的網絡爬蟲框架庫,沒有之一。最好用的框架。圖像處理,該庫是你的不二之選。 文 |?豆豆 來源:Python 技術「ID: pythonall」 ...
摘要:前言大家好,我是安果之前寫過一篇文章,文中提出了一種方案,可以實現(xiàn)每天自動給微信群群發(fā)新聞早報如何利用爬蟲實現(xiàn)給微信群發(fā)新聞早報詳細但是對于很多人來說,首先編寫一款需要一定的移動端開發(fā)經驗,其次還需要另外編寫無障礙服務應用,如此顯得有一定難1. 前言大家好,我是安果!之前寫過一篇文章,文中提出了一種方案,可以實現(xiàn)每天自動給微信群群發(fā)新聞早報如何利用 Python 爬蟲實現(xiàn)給微信群發(fā)新聞早報?...
摘要:文章鏈接關于圖片轉字符畫,相信大家都不陌生,經常出現(xiàn)在個超有趣的項目中。今天我也來實踐這個有趣的項目,更進一步的是把這個功能做成一個在線的網站,直接上傳圖片生成字符畫,在線預覽可以讓更多的人來體驗。至此,生成字符畫的腳本完成了。 文章鏈接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw 關于python圖片轉字符畫,相信大家都不陌生...
閱讀 910·2023-01-14 11:38
閱讀 877·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1981·2023-01-14 10:34
閱讀 941·2023-01-14 10:24
閱讀 818·2023-01-14 10:18
閱讀 498·2023-01-14 10:09
閱讀 572·2023-01-14 10:02