文档中心 > 容器服务

Python SDK

更新时间:2016/11/01 访问次数:38792

1、开通服务

开通服务,创建空间用于文件存储,参考接入指引

2、SDK下载

点击下面链接下载 Python SDK (含 Demo)

Python SDK

3、运行 Demo

Demo 为 SDK 压缩包下的 test.py 文件,填入开发者自己的 AK、SK 和 namespace 后,运行即可。

如何获取 AK 和 SK?

4、SDK 上传接口

4.1 统一说明

所有接口都是集成到 Want 类中。 返回值为 json 结构。根据 json 中 code 是否为200 判断是否调用成功。例如:

{
 'code': 200,
 'name': 'test.jpg',
 'url':'http://xxx/test/test.jpg',
 'request_id': '07db0514-d7bb-4785-8b34-6697e3aee52f',
 'file_size': '1056344',
 'file_modified': 1437535493816,
 'e_tag': '81FCC17FBB190BCA4EC1E9A3DEF02E57',
 'message': 'OK',
 'mime_type': 'image/jpeg',
 'dir': '/test'
 }

出错返回示例:

{
 'message': 'InternalError',
 'code': 500,
 'request_id': 'fe6b0382-c12d-413a-a70b-66745ae76442'
}

4.2 上传策略与上传选项

上传策略可以参照RestAPI文档2.1节介绍。上传时必须在上传策略中指定空间名 namespace

上传选项可以参照RestAPI文档2.6节介绍。上传时根据用户需要选择使用。

4.3 初始化

from want import Wan
image  = Want(ak, sk, type, upload_endpoint, manage_endpoint)

初始化传入参数:

AK: 开发者的AccessKeyId。

SK: 开发者的AccessKeySecret。

Type: 开发者的服务类型(即AK/SK的颁发类型,百川用户都是TOP),可不填写。

upload_endpoint 和 manage_endpoint 一般不需要填写,使用默认值即可。

用户 AK/SK 的获取方式请参照第 3 节 Demo 中的描述。

4.4 简单上传

指定需要上传的文件路径,调用上传接口完成文件上传。

建议10M以下的文件采用此种方式。调用示例如下:

1) 小文件上传(文件路径)

upload_file( policy, dir, name, file_path, md5=None, meta={}, var={})
  • 参数说明
policy  - 上传策略
dir - 上传文件的存储路径
name - 上传文件的存储文件名
file_path - 要上传的本地文件路径
md5 - 文件md5值(可选)
meta - meta信息(可选)
var - 自定义kv信息对(可选)
  • 返回结果
{
 'code': 200,
 'name': 'test.jpg',
 'url':'http://xxx/test/test.jpg',
 'request_id': '07db0514-d7bb-4785-8b34-6697e3aee52f',
 'file_size': '1056344',
 'file_modified': 1437535493816,
 'e_tag': '81FCC17FBB190BCA4EC1E9A3DEF02E57',
 'message': 'OK',
 'mime_type': 'image/jpeg',
 'dir': '/test'
}
  • 错误返回示例
{
 'message': 'InternalError',
 'code': 500,
 'request_id': 'fe6b0382-c12d-413a-a70b-66745ae76442'
}

2) 小文件上传(文件数据)

upload_content( policy, dir, name, content, md5=None, meta={}, var={})
  • 参数说明
policy  - 上传策略
dir - 上传文件的存储路径
name - 上传文件的存储文件名
content - 要上传文件的输入流
md5 - 文件md5值(可选)
meta - meta信息(可选)
var - 自定义kv信息对(可选)
  • 返回结果
{
 'code': 200,
 'name': 'test.jpg',
 'url':'http://xxx/test/test.jpg',
 'request_id': '07db0514-d7bb-4785-8b34-6697e3aee52f',
 'file_size': '1056344',
 'file_modified': 1437535493816,
 'e_tag': '81FCC17FBB190BCA4EC1E9A3DEF02E57',
 'message': 'OK',
 'mime_type': 'image/jpeg',
 'dir': '/test'
}
  • 错误返回示例
{
 'message': 'InternalError',
 'code': 500,
 'request_id': 'fe6b0382-c12d-413a-a70b-66745ae76442'
}

4.5 分片上传

如果开发者想要在代码中调用分片上传接口,控制并了解分片上传的细节,SDK中封装了分片上传相关的方法。建议上传大文件时采用此种方式。注:每块分片大小需大于100KB。

如下所示:

1) 初始化分片上传

multipart_init( policy, dir, name, content, md5=None, meta={}, var={})
  • 参数说明
policy  - 上传策略
dir - 上传文件的存储路径
name - 上传文件的存储文件名
content - 要上传文件的输入流
md5 - 文件md5值(可选)
meta - meta信息(可选)
var - 自定义kv信息对(可选)
  • 返回结果
{
 'code': 200,
 'name': 'test.jpg',
 'part_number': 1,  //上传块编号 分片初始化为1
 'id': 'ae794009-d5dc-43a7-937a-612f2e42b04d', //上传唯一id,上传分片内容时作为参数传递
 'upload_id': '45DED2452BB348E7865FF56CE8C603E2', //分片上传任务id,上传分片内容时作为参数传递
 'request_id': '38b6a5fb-9ed7-419d-ae52-43f393561b89',
 'message': 'OK',
 'dir': '/test',
 'e_tag': '61C245076C1B75BB4705A172C0605FA3' //上传部分的md5值,分片任务完成时需要用该字段验证
}

2) 分片上传文件

multipart_upload(policy, id, upload_id, part_number, content, md5=None)
  • 参数说明
policy  - 上传策略
id - 上传唯一id(初始化分片任务时返回)
upload_id - 分片上传id(初始化分片任务时返回)
part_number - 上传块编号(分片任务初始块编号为1,之后每次上传编号加1)
content - 要上传文件的输入流
md5 - 完整文件的md5值(可选)
  • 返回结果
{
 'code': 200,
 'name': 'test.jpg',
 'part_number': 1,  //上传块编号 分片初始化为1
 'id': 'ae794009-d5dc-43a7-937a-612f2e42b04d', //上传唯一id,上传分片内容时作为参数传递
 'upload_id': '45DED2452BB348E7865FF56CE8C603E2', //分片上传任务id,上传分片内容时作为参数传递
 'request_id': '38b6a5fb-9ed7-419d-ae52-43f393561b89',
 'message': 'OK',
 'dir': '/test',
 'e_tag': '61C245076C1B75BB4705A172C0605FA3' //上传部分的md5值,分片任务完成时需要用该字段验证
}

3) 分片上传完成

multipart_complete(policy, id, upload_id, parts, md5=None)
  • 参数说明
policy  - 上传策略
id - 上传唯一id(初始化分片任务时返回)
upload_id - 分片上传id(初始化分片任务时返回)
parts - 每个分片md5值组成的json数组,需要进行base64的编码.例如:base64.urlsafe_b64encode(json.dumps([{'e_tag': '分片1返回的e_tag', 'part_number': 1}, {'e_tag': '分片2返回的e_tag', 'part_number': 2},
         {'e_tag': '分片3返回的e_tag', 'part_number': 3}]))
md5 - 完整文件的md5值(可选)
  • 返回结果
{
 'code': 200,
 'name': 'test.jpg',
 'url': 'http://xxx.image.alimmdn.com/test/test.jpg',
 'file_size': '1056344',
 'file_modified': 1437967420625,
 'upload_id': '45DED2452BB348E7865FF56CE8C603E2',
 'request_id': '8628d171-4953-4704-8443-f89e0790a0db',
 'message': 'OK',
 'mime_type': 'image/jpeg',
 'dir': '/test'
}

3) 分片上传取消

multipart_cancel(policy, id, upload_id)
  • 参数说明
policy  - 上传策略
id - 上传唯一id(初始化分片任务时返回)
upload_id - 分片上传id(初始化分片任务时返回)

FAQ

关于此文档暂时还没有FAQ
返回
顶部