久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

python 阿里云oss實現(xiàn)直傳簽名與回調(diào)驗證的示例方法

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

簽名

import base64import jsonimport timefrom datetime import datetimeimport hmacfrom hashlib import sha1access_key_id = ’’# 請?zhí)顚懩腁ccessKeySecret。access_key_secret = ’’# host的格式為 bucketname.endpoint ,請?zhí)鎿Q為您的真實信息。host = ’’# callback_url為 上傳回調(diào)服務(wù)器的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}

回調(diào)驗簽

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): # 創(chuàng)建連接池 mysql_pool = await aiomysql.create_pool(host=’127.0.0.1’, port=3306, user=’’, password=’’, db=’’, loop=loop) async def on_shutdown(application): ''' 接收到關(guān)閉信號時,要先關(guān)閉連接池,并等待連接池關(guān)閉成功. :param web.Application application: :return: ''' application[’mysql_pool’].close() # 沒有下面這句話會報錯 RuntimeError: Event loop is closed ,因為連接池沒有真正關(guān)關(guān)閉程序就關(guān)閉了,引發(fā)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()

到此這篇關(guān)于python 阿里云oss實現(xiàn)直傳簽名與回調(diào)驗證的文章就介紹到這了,更多相關(guān)python 直傳簽名與回調(diào)驗證內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品伊人久久 | 成人片网址 | 伊人狠狠干 | 精品在线不卡 | 成人a毛片 | 精品网站999www | 毛片一区二区 | 操皮视频 | 欧美成人精品一区二区三区 | 久久精品在线 | 波多野结衣一区二区三区四区 | 影音先锋亚洲资源 | 亚洲欧美国产毛片在线 | 久久99久久99精品 | 欧美日韩一区二区中文字幕 | 日韩av一级片 | 蜜臀精品 | 国产成人99久久亚洲综合精品 | 欧美激情高清 | 久久香蕉网 | 欧美成年黄网站色视频 | 男人的天堂一级片 | 亚洲综合激情网 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 久久久精| 日本在线观看视频网站 | 毛片免费观看网址 | 欧美成人精品激情在线观看 | 视频网站免费观看 | 狠狠艹 | 亚洲国产精品久久人人爱 | 日本三级2018 | 欧美激情综合五月色丁香小说 | 99re在线视频 | 亚洲天堂成人在线 | 久久久精品亚洲 | 免费观看成人毛片 | 亚洲一区二区福利 | 日韩精品 电影一区 亚洲 | 日韩视频一区二区三区在线观看 | 欧美成人一区二区 |