电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 阿里云oss實現直傳簽名與回調驗證的示例方法

瀏覽:100日期:2022-06-23 18:32:48

簽名

import base64import jsonimport timefrom datetime import datetimeimport hmacfrom hashlib import sha1access_key_id = ’’# 請填寫您的AccessKeySecret。access_key_secret = ’’# host的格式為 bucketname.endpoint ,請替換為您的真實信息。host = ’’# callback_url為 上傳回調服務器的URL,請將下面的IP和Port配置為您自己的真實信息。callback_url = ''# 用戶上傳文件時指定的前綴。upload_dir = ’user-dir-prefix/’expire_time = 1200expire_syncpoint = int(time.time() + expire_time)policy_dict = { ’expiration’: datetime.utcfromtimestamp(expire_syncpoint).isoformat() + ’Z’, ’conditions’: [ {'bucket': 'test-paige'}, [’starts-with’, ’$key’, ’user/test/’] ]}policy = json.dumps(policy_dict).strip()policy_encode = base64.b64encode(policy.encode())signature = base64.encodebytes(hmac.new(access_key_secret.encode(), policy_encode, sha1).digest())callback_dict = { ’callbackUrl’: callback_url, ’callbackBody’: ’filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${’ ’imageInfo.width}’, ’callbackBodyType’: ’application/json’}callback = base64.b64encode(json.dumps(callback_dict).strip().encode()).decode()var = { ’accessid’: access_key_id, ’host’: host, ’policy’: policy_encode.decode(), ’signature’: signature.decode().strip(), ’expire’: expire_syncpoint, ’callback’: callback}

回調驗簽

import asyncioimport base64import timeimport aiomysqlimport rsafrom aiohttp import web, ClientSessionfrom urllib import parseimport uuiddef success(msg=’’, data=None): if data is None: data = {} dict_data = { ’code’: 1, ’msg’: msg, ’data’: data } return web.json_response(dict_data)def failed(msg=’’, data=None): if data is None: data = {} dict_data = { ’code’: 0, ’msg’: msg, ’data’: data } return web.json_response(dict_data)async def handle(request): ''' 獲取連接池 :param web.BaseRequest request: :return: ''' authorization_base64 = request.headers[’authorization’] x_oss_pub_key_url_base64 = request.headers[’x-oss-pub-key-url’] pub_key_url = base64.b64decode(x_oss_pub_key_url_base64.encode()) authorization = base64.b64decode(authorization_base64.encode()) path = request.path async with ClientSession() as session: async with session.get(pub_key_url.decode()) as resp: pub_key_body = await resp.text() pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(pub_key_body.encode()) body = await request.content.read() auth_str = parse.unquote(path) + ’n’ + body.decode() parse_url = parse.parse_qs(body.decode()) print(parse_url) try:rsa.verify(auth_str.encode(), authorization, pubkey)pool = request.app[’mysql_pool’]async with pool.acquire() as conn: async with conn.cursor() as cur: id = str(uuid.uuid4()) url = parse_url[’filename’][0] mime = parse_url[’mimeType’][0] disk = ’oss’ time_at = time.strftime('%Y-%m-%d %H:%I:%S', time.localtime()) sql = 'INSERT INTO media(id,url,mime,disk,created_at,updated_at) VALUES(%s,%s,%s,%s,%s,%s)' await cur.execute(sql, (id, url, mime, disk, time_at, time_at)) await conn.commit()dict_data = { ’id’: id, ’url’: url, ’cdn_url’: ’https://cdn.***.net’ + ’/’ + url, ’mime’: mime, ’disk’: disk, ’created_at’: time_at, ’updated_at’: time_at,}return success(data=dict_data) except rsa.pkcs1.VerificationError:return failed(msg=’驗證錯誤’)async def init(loop): # 創建連接池 mysql_pool = await aiomysql.create_pool(host=’127.0.0.1’, port=3306, user=’’, password=’’, db=’’, loop=loop) async def on_shutdown(application): ''' 接收到關閉信號時,要先關閉連接池,并等待連接池關閉成功. :param web.Application application: :return: ''' application[’mysql_pool’].close() # 沒有下面這句話會報錯 RuntimeError: Event loop is closed ,因為連接池沒有真正關關閉程序就關閉了,引發python的報錯 await application[’mysql_pool’].wait_closed() application = web.Application() application.on_shutdown.append(on_shutdown) # 把連接池放到 application 實例中 application[’mysql_pool’] = mysql_pool application.add_routes([web.get(’/’, handle), web.post(’/oss’, handle)]) return applicationif __name__ == ’__main__’: loop = asyncio.get_event_loop() application = loop.run_until_complete(init(loop)) web.run_app(application, host=’127.0.0.1’) loop.close()

到此這篇關于python 阿里云oss實現直傳簽名與回調驗證的文章就介紹到這了,更多相關python 直傳簽名與回調驗證內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 光环国际-新三板公司_股票代码:838504| 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 比亚迪叉车-比亚迪电动叉车堆垛车托盘车仓储叉车价格多少钱报价 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 科客,主见不成见| LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 退火炉,燃气退火炉,燃气热处理炉生产厂家-丹阳市丰泰工业炉有限公司 | 天津云仓-天津仓储物流-天津云仓一件代发-顺东云仓 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 出国劳务公司_正规派遣公司[严海]| 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 |