文件上傳

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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容