from fastapi import FastAPI, File, UploadFile
from typing import List
import uvicorn
import fastapi_cdn_host
app = FastAPI()
fastapi_cdn_host.patch_docs(app)
# 客戶(hù)端 選擇發(fā)送的文件->服務(wù)器接收->網(wǎng)站程序判斷->臨時(shí)文件->移動(dòng)到指定的路徑
# 服務(wù)器 接收的資源程序
# 服務(wù)器接收資源代碼
# 單小文件上傳
# 文件上傳,文件會(huì)放在請(qǐng)求體里面,但是請(qǐng)求頭的content-type是multipart/form-data
# file: bytes = File():適合小文件上傳
@app.post("/files/")
# 文件時(shí)字節(jié)流類(lèi)型,是fastapi里面的File類(lèi)型
async def create_file(file: bytes = File()):
print("file:", file)
return {"file_size": len(file)}
# 多文件上傳
@app.post("/multiFiles/")
async def create_files(files: List[bytes] = File()):
for file in files:
print(len(file))
return {"file_sizes": [len(file) for file in files]}
# file: UploadFile:適合大文件上傳,比較常用
@app.post("/uploadFile/")
#直接對(duì)應(yīng)UploadFile類(lèi)型數(shù)據(jù)
async def create_upload_file(file: UploadFile):
#打印文件名稱(chēng)
print('file',file.filename)
#將上傳的文件保存到服務(wù)本地
with open(f"{file.filename}", 'wb') as f:
#一次讀取1024字節(jié),循環(huán)讀取寫(xiě)入
for chunk in iter(lambda: file.file.read(1024), b''):
f.write(chunk)
return {"filename": file.filename}
# 上傳多個(gè)文件
@app.post("/multiUploadFiles/")
async def create_upload_files(files: List[UploadFile]):
for file in files:
print(file.filename)
# 將上傳的文件保存到服務(wù)本地
path = os.path.join('images', f'{file.filename}')
with open(path, 'wb') as f:
# 一次讀取1024字節(jié),循環(huán)讀取寫(xiě)入
for chunk in iter(lambda: file.file.read(1024), b''):
f.write(chunk)
return {"filenames": [file.filename for file in files]}
if __name__ == '__main__':
#注意,run的第一個(gè)參數(shù) 必須是文件名:應(yīng)用程序名
uvicorn.run("file1:app", port=8080, reload=True)
文件上傳
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 簡(jiǎn)介 看了不少的教程,在系統(tǒng)整合搭建的過(guò)程中一般寫(xiě)到文件上傳這一節(jié)時(shí),基本上實(shí)現(xiàn)一個(gè)文件上傳功能就不再繼續(xù)拓展,而...
- 1:(本地上傳)tomcat 設(shè)置虛擬路徑upload 以http://ip:port/upload 訪問(wèn)對(duì)應(yīng)的...
- 一. 單文件上傳 1.1 表單 1.2 php 代碼 二. 文件上傳函數(shù)的封裝 文件上傳函數(shù)多次調(diào)用, 所以進(jìn)行函...
- SpringCloud(第 023 篇)簡(jiǎn)單文件上傳微服務(wù)采取curl或者頁(yè)面點(diǎn)擊實(shí)現(xiàn)文件上傳 一、大致介紹 二、...