FASTAPI

18 篇文章 0 订阅
10 篇文章 0 订阅
#导入库
from fastapi import FastAPI, File, Form, UploadFile
from typing import List  #上传多个文件
import shutil #删除文件夹

#实例化
app = FastAPI()
@app.post("/***")  #名字自取,尽量这两个一样
async def ***(files: List[UploadFile] = File(...)): #多个文件上传
    try:
    	for file in files: # 循环文件list,读取其中每一个文件
            res = await file.read()  # 读取
            with open(cache_path+file.filename, "wb") as f:  #读取文件,并写入
                f.write(res) # 写入
                ...... # 自己需要的代码操作
                ...... # 可以自己调用函数
         return {"filenname": [(cache_path+file.filename) for file in files]} #返回需要的信息 
     except Exception as e:  # 捕捉报错信息
        return {"message Ex": str(e)}
	 finally:  # 不论是否出错,都删除临时文件夹
        shutil.rmtree(cache_path)
if __name__ == '__main__':
    import uvicorn
    print('----------')
    uvicorn.run(app='aaa:app', host="0.0.0.0", port=8084, reload=True, debug=True)  #aaa是.py文件名字,port本地地址,debug=TRUE可以使用调试

# 上传单个文件
app = FastAPI()
@app.post("/***")
async def ***(file: UploadFile = File(...)):
	try:
        res = await file.read()
        with open(cache_path + file.filename, "wb") as f:
            f.write(res)
            .....  # 同上
            .....
            # 返回处理后的图片
            img_1 = cv2.imread(cache_path_1 + file.filename)  # 先读取图片,或者处理后返回结果就是图片
            res, img = cv2.imencode(".png", img_1) # 转换
            cv2.waitKey(0)
        return StreamingResponse(io.BytesIO(img.tobytes()), media_type="image/png")  # 返回图片
    except Exception as e:
        return {"messgae Ex": str(e)}
    finally:  # 删除文件
        shutil.rmtree(cache_path)

临时文件夹创建
MD5方法

import time
    import hashlib
    time = str(time.time())  # 获取当前时间转换为str
    dir_x = str(file) + time  # 文件名转换str
    if isinstance(dir_x, str):
    # 如果是unicode先转utf-8
        parmStr = dir_x.encode("utf-8")
    m = hashlib.md5()
    m.update(parmStr)
    dir_s = m.hexdigest()
    cache_path = "创建文件夹的路径/" + dir_s + "/"
    os.makedirs(cache_path)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值