本文介绍如何使用上传回调。

上传回调的完整代码请参见GitHub

以下代码用于上传回调:

# -*- coding: utf-8 -*-
import json
import base64
import os
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')

# 准备回调参数。
callback_dict = {}
# 设置回调请求的服务器地址,如http://oss-demo.aliyuncs.com:23450或http://127.0.0.1:9090。
callback_dict['callbackUrl'] = 'http://oss-demo.aliyuncs.com:23450'
# 设置回调请求消息头中Host的值, 如oss-cn-hangzhou.aliyuncs.com。
callback_dict['callbackHost'] = 'oss-cn-hangzhou.aliyuncs.com'
# 设置发起回调时请求body的值。
callback_dict['callbackBody'] = 'filename=${object}&size=${size}&mimeType=${mimeType}'
# 设置发起回调请求的Content-Type。
callback_dict['callbackBodyType'] = 'application/x-www-form-urlencoded'
# 回调参数是Json格式,并且需要Base64编码。
callback_param = json.dumps(callback_dict).strip()
base64_callback_body = base64.b64encode(callback_param)
# 回调参数编码后放在Header中发送给OSS。
headers = {'x-oss-callback': base64_callback_body}

# 上传并回调。
result = bucket.put_object('<yourObjectName>', 'a'*1024*1024, headers)

put_object、put_object_from_file、complete_multipart_upload支持上传回调功能。上传回调详情请参见开发指南中的上传回调