本文介绍如何使用上传回调。在简单上传(put_object和put_object_from_file)以及完成分片上传(complete_multipart_upload)时支持使用上传回调。
在上传字符串时使用上传回调(callback),目标存储空间为examplebucket,上传的目标文件为examplefiles文件夹下的exampleobject.txt文件,具体代码如下。
# -*- coding: utf-8 -*- import json import base64 import oss2 # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret') # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 # 填写Bucket名称。 bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket') # 定义回调参数Base64编码函数。 def encode_callback(callback_params): cb_str = json.dumps(callback_params).strip() return oss2.compat.to_string(base64.b64encode(oss2.compat.to_bytes(cb_str))) # 设置上传回调参数。 callback_params = {} # 设置回调请求的服务器地址,例如http://oss-demo.aliyuncs.com:23450。 callback_params['callbackUrl'] = 'http://oss-demo.aliyuncs.com:23450' #(可选)设置回调请求消息头中Host的值,即您的服务器配置Host的值。 #callback_params['callbackHost'] = 'yourCallbackHost' # 设置发起回调时请求body的值。 callback_params['callbackBody'] = 'bucket=${bucket}&object=${object}' # 设置发起回调请求的Content-Type。 callback_params['callbackBodyType'] = 'application/x-www-form-urlencoded' encoded_callback = encode_callback(callback_params) # 设置发起回调请求的自定义参数,由Key和Value组成,Key必须以x:开始。 callback_var_params = {'x:my_var1': 'my_val1', 'x:my_var2': 'my_val2'} encoded_callback_var = encode_callback(callback_var_params) # 上传并回调。 params = {'callback': encoded_callback, 'callback-var': encoded_callback_var} # 填写Object完整路径和字符串。Object完整路径中不能包含Bucket名称。 result = bucket.put_object('examplefiles/exampleobject.txt', 'a'*1024*1024, params)