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