NOS Node.js SDK
NOS Node.js SDK实现了NOS对象操作接口,基于此SDK能方便快速地实现JavaScript应用程序来使用NOS的对象存储服务。
支持的功能
对象操作接口
- Delete Object —— 删除一个对象
- Delete Multiple Objects —— 用一个HTTP请求删除同一个Bucket中的多个对象
- Get Object —— 读取对象内容
- Head Object —— 获取对象相关元数据信息
- List Objects —— 获取一个桶的对象列表
- Put Object —— 上传一个对象
- Put Object - Copy —— 拷贝一个对象
- Put Object - Move —— 桶内部move一个对象
大对象分块操作接口
- Initiate Multipart Upload —— 初始化分块上传
- Upload Part —— 上传一个分块
- Complete Multipart Upload —— 完成分块上传
- Abort Multipart Upload —— 取消分块上传并删除已上传的分块
- List Parts —— 列出已上传的分块
- List Multipart Uploads —— 列出所有执行中的分块上传事件
接口实现
在调用对象操作接口前需要如下步骤:
1.引入operations模块(var NOSClient = require('./operations'))
2.新建 nosclient 对象 (nosclient = new NOSClient())
3.设定nosclient对象的 host port accessId secretKey
nosclient.setAccessId('accessId')
nosclient.setSecretKey('secretKey')
nosclient.setHost('localhost')
nosclient.setPort('8500')
4.调用nosclient对象的各个方法发送不同的请求,第一个参数是map,第二个参数是一个回调函数
nosclient.delete_object({bucket:'bucket',key:'b.txt'},func)
关于第二个参数,即回调函数,是一个异步函数,会在接收到响应的时候回调,该函数有如下形式:
var func = function(res){
//可以从res中获取响应的statusCode,headers以及body,然后由用户自由作相应处理
util.log('STATUS: ' + res.statusCode); //获取statusCode
util.log('HEADERS: ' + util.inspect(res.headers)); //获取headers
res.setEncoding('utf8');
res.on('data', function(chunk){
util.log('BODY: ' + chunk); //body的获取需要放在回调函数中
});
res.on('error', function(err){
util.log('RESPONSE ERROR: ' + err);
});
}
对象操作接口
Delete Object
使用举例
nosclient.delete_object({bucket:'bucket',key:'b.txt'},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
返回值举例
18 Jul 08:24:41 - STATUS: 200
18 Jul 08:24:41 - HEADERS: {
'x-nos-request-id': 'e2f97ce70af100000155fb63f9fc15fb',
'x-nos-version-id': '0',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
Delete Multiple Objects
使用举例
nosclient.delete_objects(
{bucket:'bucket',
keys:[{Key:'b.txt'},{Key:'c.txt'}],
quiet:'False'})
参数说明
- bucket(string) -- 桶名。
- keys(array) -- 待删除的对象名称列表,是一个数组,每个元素是一个键值对
- quiet(boolean) -- 是否开启安静模式(安静模式不显示具体删除信息)。
返回值举例
18 Jul 08:29:27 - STATUS: 200
18 Jul 08:29:27 - HEADERS: {
'x-nos-request-id': 'ab6f6cce0af100000155fb68571115fb',
'content-type': 'application/xml; charset=UTF-8',
'content-length': '55',
connection: 'close',
server: 'Jetty(6.1.11)' }
18 Jul 08:29:27 - BODY:
<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult/>
返回值的response
的字符形式可能如下:
<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult>
<Deleted>
<Key>1.jpg</Key>
</Deleted>
<Error>
<Key>2.jpg</Key>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
</Error>
<Error>
<Key>3.jpg</Key>
<Code>NoSuchKey</Code>
<Message>No Such Key</Message>
</Error>
</DeleteResult>
-
DeleteResult 多重删除的响应容器元素 类型:容器
-
Deleted 已被成功删除的容器元素 类型:容器 父节点:DeleteResult
-
Key 已删除的对象键值 类型:字符串 父节点:Deleted,Error
-
Error 删除失败的对象版本号 类型:容器 父节点:DeleteResult
-
Code 删除失败返回的错误码 类型:字符串 父节点:Error
-
Message 删除失败返回的详细错误描述 类型:字符串 父节点:Error
Get Object
使用举例
nosclient.get_object({bucket:'bucket',key:'b.txt'},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- 其他可选参数,如下。
- range(string) -- 下载指定的数据块,Range Header参考RFC2616。
- if_modified_since(datetime) -- 指定时间,只有当指定时间之后做过修改操作才返回这个对象。
返回值举例
18 Jul 08:35:00 - STATUS: 200
18 Jul 08:35:00 - HEADERS: {
'x-nos-request-id': 'aa2402d20af100000155fb6d6cd915fb',
'content-type': 'application/octet-stream; charset=UTF-8',
etag: '926d74ef88054b6586a5530c5c6606b3',
'content-disposition': 'inline; filename="c.txt"',
'last-modified': 'Mon, 18 Jul 2016 08:33:12 Asia/Shanghai',
'cache-control': 'no-cache',
'content-length': '18',
connection: 'close',
server: 'Jetty(6.1.11)' }
18 Jul 08:35:00 - BODY:
今天天气很热
返回值说明
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
- content_length(integer) -- 返回的数据块的字节数。
- content_range(string) -- 返回的数据块的范围。
- content_type(string) -- 返回的数据块的类型。
- etag(string) -- 对象的哈希值,反应对象内容的更改情况。
- body(StreamingBody) -- 对象数据。
Head Object
使用举例
nosclient.head_object({bucket:'bucket',key:'b.txt'},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- 其他可选参数,如下。
- range(string) -- 下载指定的数据块,Range Header参考RFC2616。
- if_modified_since(datetime) -- 指定时间,只有当指定时间之后做过修改操作才返回这个对象。
返回值举例
18 Jul 08:45:10 - STATUS: 200
18 Jul 08:45:10 - HEADERS: { 'x-nos-request-id': '346251790af100000155fb76baac15fb',
etag: '926d74ef88054b6586a5530c5c6606b3',
'content-length': '18',
'last-modified': 'Mon, 18 Jul 2016 08:33:12 Asia/Shanghai',
'content-type': 'application/octet-stream',
'cache-control': 'no-cache',
connection: 'close',
server: 'Jetty(6.1.11)' }
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
- content_length(integer) -- 返回的数据块的字节数。
- content_type(string) -- 返回的数据块的类型。
- last_modified(string) -- 最近一次修改对象的时间。
List Objects
使用举例
nosclient.list_objects({bucket:'bucket'},func)
参数说明
- bucket(string) -- 桶名。
- kwargs -- 其他可选参数。
- delimiter(string) -- 分界符,用于做groupby操作。
- marker(string) -- 字典序的起始标记,只列出该标记之后的部分。
- limit(integer) -- 限定返回的数量,返回的结果小于或等于该值。取值范围:0-1000,默认:100
- prefix(string) -- 只返回Key以特定前缀开头的那些对象。可以使用前缀把一个桶里面的对象分成不同的组,类似文件系统的目录一样。
返回值举例
18 Jul 08:49:31 - STATUS: 200
18 Jul 08:49:31 - HEADERS: { 'x-nos-request-id': 'db9524a10af100000155fb7ab73d15fb',
'content-type': 'application/xml; charset=UTF-8',
'content-length': '1343',
connection: 'close',
server: 'Jetty(6.1.11)' }
18 Jul 08:49:31 - BODY: <?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult>
<Name>bucket</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>100</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>a.txt</Key>
<LastModified>2016-07-18T08:49:03 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>b.txt</Key>
<LastModified>2016-07-18T08:49:07 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>c.txt</Key>
<LastModified>2016-07-18T08:33:12 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>d.txt</Key>
<LastModified>2016-07-18T08:48:59 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>nimawangjiao</Key>
<LastModified>2016-07-15T09:56:49 +0800</LastModified>
<ETag>12be091bd1197071aefd965f8223301b</ETag>
<Size>106</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
</ListBucketResult>
返回值的response
的字符形式可能如下:
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult>
<Name>bucket</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>100</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>a.txt</Key>
<LastModified>2016-07-18T08:49:03 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>b.txt</Key>
<LastModified>2016-07-18T08:49:07 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>c.txt</Key>
<LastModified>2016-07-18T08:33:12 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>d.txt</Key>
<LastModified>2016-07-18T08:48:59 +0800</LastModified>
<ETag>926d74ef88054b6586a5530c5c6606b3</ETag>
<Size>18</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
<Contents>
<Key>nimawangjiao</Key>
<LastModified>2016-07-15T09:56:49 +0800</LastModified>
<ETag>12be091bd1197071aefd965f8223301b</ETag>
<Size>106</Size>
<StorageClass>archive-standard</StorageClass>
</Contents>
</ListBucketResult>
-
Contents 对象元数据,代表一个对象描述 类型:容器 父节点:ListBucketObjects 子节点:Key,LastModified,Size,Etag
-
CommonPrefixes 只有当指定了delimiter分界符时,才会有这个响应 类型:字符串 父节点:ListBucketObjects
-
delimiter 分界符 类型:字符串 父节点:ListBucketObjects
-
DisplayName 对象的拥有者 类型:字符串 父节点:ListBucketObjects.Contents.Owner
-
Etag 对象的哈希描述 类型:字符串 父节点:ListBucketObjects.Contents
-
ID 对象拥有者的ID 类型:字符串 父节点:ListBucketObjects.Contents.Owner
-
IsTruncated 是否截断,如果因为设置了limit导致不是所有的数据集都返回,则该值设置为true 类型:布尔值 父节点:ListBucketObjects
-
Key 对象的名称 类型:字符串 父节点:ListBucketObjects.Contents
-
LastModified 对象最后修改日期和时间 类型:日期 格式:yyyy-MM-dd”T”HH:mm:ss.SSSZ 父节点:ListBucketObjects.Contents
-
Marker 列表的起始位置,等于请求参数设置的Marker值 类型:字符串 父节点:ListBucketObjects
-
NextMark 下一次分页的起点 类型:字符串 父节点:ListBucketObjects
-
MaxKeys 请求的对象个数限制 类型:数字 父节点:ListBucketObjects
-
Name 请求的桶名称 类型:字符串 父节点:ListBucketObjects
-
Owner 桶拥有者 类型:容器 父节点:ListBucketObjects.contents | CommonPrefixes 子节点:DisplayName|ID
-
Prefix 请求的对象的Key的前缀 类型:字符串 父节点:ListBucketObjects
-
Size 对象的大小字节数 类型:数字 父节点:ListBucketObjects.contents
-
StorageClasss 存储级别 类型:字符串 父节点:ListBucketObjects.contents
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
- response(xml.etree.ElementTree) -- 包含返回信息的xml对象。
Put Object
使用举例
nosclient.put_object({
bucket:'bucket',
key:'d.txt',
body:new Buffer('information')},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- body(serializable_object) -- 对象内容,请传入一个Buffer对象
- kwargs -- 其他可选参数。
- storage_class(string) -- 对象的存储级别,有效值如下,默认
standard
- standard(标准存储,对应三备份,耐久性高)
- archive-standard(大容量归档存储三备份)
- archive-cheap(大容量归档存储两备份)
- archive-trivial(大容量归档存储单备份)
- meta_data(dict) -- 用户自定义的元数据,通过键值对的形式上报,键名和值均为字符串,且键名需以
x-nos-meta-
开头。
- storage_class(string) -- 对象的存储级别,有效值如下,默认
返回值举例
18 Jul 08:58:35 - STATUS: 200
18 Jul 08:58:35 - HEADERS: { 'x-nos-request-id': '2aa8555c0af100000155fb83034c15fb',
etag: 'b1335fbca4c89d12719cf99fdcab707e',
'x-nos-object-name': 'd.txt',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
返回值说明
- x_nos_request_id(string) -- 唯一定位一个请求的id号。
- etag(string) -- 对象的哈希值,反应对象内容的更改情况。
Put Object - Copy
使用举例
nosclient.copy_object({src_bucket:'bucket',
src_key:'nimawangjiao',
dest_bucket:'bucket2',
dest_key:'q.txt'},func)
参数说明
- src_bucket(string) -- 来源对象的桶名。
- src_key(string) -- 来源对象的对象名。
- dest_bucket(string) -- 目标对象的桶名。
- dest_key(string) -- 目标对象的对象名。
返回值举例
18 Jul 09:09:52 - STATUS: 200
18 Jul 09:09:52 - HEADERS: { 'x-nos-request-id': 'aa1c14690af100000155fb8d577415fb',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
Move Object
使用举例
nosclient.move_object({
src_bucket:'bucket2',
src_key:'q.txt',
dest_bucket:'bucket2',
dest_key:'m.txt'},func)
参数说明
- src_bucket(string) -- 来源对象的桶名。
- src_key(string) -- 来源对象的对象名。
- dest_bucket(string) -- 目标对象的桶名。
- dest_key(string) -- 目标对象的对象名。
返回值举例
18 Jul 09:13:34 - STATUS: 200
18 Jul 09:13:34 - HEADERS: {
'x-nos-request-id': '94c462780af100000155fb90a20515fb',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
返回值说明
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
Initiate Multipart Upload
使用举例
nosclient.create_multipart_upload({
bucket:'bucket',
key:'d.txt',
meta_data:{'x-nos-meta-hell':'hello'}},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- 其他可选参数。
- storage_class(string) -- 对象的存储级别,有效值如下,默认
standard
- standard(标准存储,对应三备份,耐久性高)
- archive-standard(大容量归档存储三备份)
- archive-cheap(大容量归档存储两备份)
- archive-trivial(大容量归档存储单备份)
- meta_data(dict) -- 用户自定义的元数据,通过键值对的形式上报,键名和值均为字符串,且键名需以
x-nos-meta-
开头。
- storage_class(string) -- 对象的存储级别,有效值如下,默认
返回值举例
18 Jul 09:17:49 - STATUS: 200
18 Jul 09:17:49 - HEADERS: { 'x-nos-request-id': 'a39843610af100000155fb949f8115fb',
'content-type': 'application/xml; charset=UTF-8',
'content-length': '193',
connection: 'close',
server: 'Jetty(6.1.11)' }
18 Jul 09:17:49 - BODY: <?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult>
<Bucket>bucket2</Bucket>
<Key>d.txt</Key>
<UploadId>4688046693530018081</UploadId>
</InitiateMultipartUploadResult>
返回值的response
的字符形式可能如下:
<?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult>
<Bucket>filestation</Bucket>
<Key>movie.avi</Key>
<UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3S5tMnRzIHVwbG9hZA</UploadId>
</InitiateMultipartUploadResult>
-
InitiateMultipartUploadResult 响应容器元素 类型:容器 子节点:Key,Bucket
-
Key 对象的Key 类型:字符串 父节点:InitiateMultipartUploadResult
-
Bucket 对象的桶 类型:字符串 父节点:InitiateMultipartUploadResult
-
UploadId 分块上传的ID,用这个ID来作为各块属于这个文件的标识 类型:字符串 父节点:InitiateMultipartUploadResult
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的id号。
- response(xml.etree.ElementTree) -- 包含返回信息的xml对象。
Upload Part
使用举例
nosclient.upload_part({
bucket:'bucket',
key:'d.txt',
part_num:1,
upload_id:'4688949732940019989', (此处不能省略引号)
body:new Buffer('here must larger than 16k')},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- part_num(integer) -- 数据分块编码号(1-10000)。
- upload_id(string) -- 数据上传标识号。
- body(serializable_object) -- 对象内容,可以是文件句柄、字符串、字典等任何可序列化的对象。
返回值举例
18 Jul 09:21:19 - STATUS: 200
18 Jul 09:21:19 - HEADERS: { 'x-nos-request-id': 'af253f210af100000155fb97d3ad15fb',
etag: 'ff9360dc18c5e09a80db8f0aa115d52c',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
返回值说明
- x_nos_request_id(string) -- 唯一定位一个请求的id号。
- etag(string) -- 对象的哈希值,反应对象内容的更改情况。
Complete Multipart Upload
在将所有数据Part都上传完成后,必须调用Complete Multipart Upload API来完成整个文件的Multipart Upload。在执行该操作时,用户必须提供所有有效的数据Part的列表(包括part号码和ETAG);NOS收到用户提交的Part列表后,会逐一验证每个数据Part的有效性。当所有的数据Part验证通过后,NOS将把这些数据part组合成一个完整的Object。 使用x-nos-Object-md5扩展头发送对象的MD5值,用作去重库的建立(Put Object使用Content-MD5建立对象去重库)。
使用举例
nosclient.complete_multipart_upload({
bucket:'bucket',
key:'d.txt',
upload_id:'4688949732940019989',
info:[{PartNumber:'1',ETag : 'ff9360dc18c5e09a80db8f0aa115d52c'}]},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- upload_id(string) -- 数据上传标识号。
- info(list) -- 所有有效的数据Part的列表,传入的是一个数组,数组元素是一个map,map中的key-value规则如上例所示
- kwargs -- 其他可选参数,如下。
- object_md5(string) -- 发送对象的md5值,用于后续去重。
返回值举例
18 Jul 09:21:19 - STATUS: 200
18 Jul 09:21:19 - HEADERS: { 'x-nos-request-id': 'af253f210af100000155fb97d3ad15fb',
etag: 'ff9360dc18c5e09a80db8f0aa115d52c',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="">
<Location> filestation.nos.netease.com/movie.avi</Location>
<Bucket>filestation </Bucket>
<Key>movie.avi </Key>
<ETag>"3858f62230ac3c915f300c664312c11f-9"</ETag>
</CompleteMultipartUploadResult>
返回值的response
的字符形式可能如下:
<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="">
<Location> filestation.nos.netease.com/movie.avi</Location>
<Bucket>filestation </Bucket>
<Key>movie.avi </Key>
<ETag>"3858f62230ac3c915f300c664312c11f-9"</ETag>
</CompleteMultipartUploadResult>
-
Bucket 新创建对象所在的桶 类型:字符串 父节点:CompleteMultipartUploadResult
-
CompleteMultipartUploadResult 响应容器元素 类型:容器 子节点:Location,Bucket,Key,ETag
-
ETag 新创建的对象的Entity Tag 类型:字符串 父节点:CompleteMultipartUploadResult
-
Key 新创建对象的Key 类型:字符串 父节点:CompleteMultipartUploadResult
-
Location 新创建的这个对象的资源定位URL 类型:字符串 父节点:CompleteMultipartUploadResult
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
- response(xml.etree.ElementTree) -- 包含返回信息的xml对象。
Abort Multipart Upload
使用举例
nosclient.abort_multipart_upload({
bucket:'bucket',
key:'d.txt',
upload_id:'4688949732940019989'},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- upload_id(string) -- 数据上传标识号。
返回值举例
18 Jul 09:31:10 - STATUS: 200
18 Jul 09:31:10 - HEADERS: { 'x-nos-request-id': 'f381b02c0af100000155fba0d89e15fb',
'content-length': '0',
connection: 'close',
server: 'Jetty(6.1.11)' }
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
List Parts
使用举例
nosclient.list_parts({
bucket:'bucket',
key:'d.txt',
upload_id:'4688949732940019989'},func)
参数说明
- bucket(string) -- 桶名。
- key(string) -- 对象名。
- upload_id(string) -- 数据上传标识号。
- kwargs -- 其他可选参数,如下。
- limit(integer) -- 限制响应中返回的记录个数。取值范围:0-1000,默认1000。
- part_number_marker(string) -- 分块号的界限,只有更大的分块号会被列出来。
返回值举例
18 Jul 09:36:12 - STATUS: 200
18 Jul 09:36:12 - HEADERS: { 'x-nos-request-id': '5292fe910af100000155fba5740515fb',
'content-type': 'application/xml; charset=UTF-8',
'content-length': '1123',
connection: 'close',
server: 'Jetty(6.1.11)' }
18 Jul 09:36:12 - BODY:
<?xml version="1.0" encoding="UTF-8"?>
<ListPartsResult>
<Bucket>bucket2</Bucket>
<Key>d.txt</Key>
<UploadId>4685815523730016248</UploadId>
<Owner>
<ID>ProductID</ID>
</Owner>
<StorageClass>archive-standard</StorageClass>
<PartNumberMarker>0</PartNumberMarker>
<NextPartNumberMarker>4</NextPartNumberMarker>
<MaxParts>1000</MaxParts>
<IsTruncated>false</IsTruncated>
<Part>
<PartNumber>1</PartNumber>
<LastModified>2016-07-15T19:20:27 +0800</LastModified>
<ETag>b33df4c9833e4dcba58e72ea0a9fcd7f</ETag>
<Size>12</Size>
</Part>
<Part>
<PartNumber>2</PartNumber>
<LastModified>2016-07-15T19:20:38 +0800</LastModified>
<ETag>2e6ff8d5f6a559aef625f881d1fb20b4</ETag>
<Size>5</Size>
</Part>
<Part>
<PartNumber>3</PartNumber>
<LastModified>2016-07-15T19:20:47 +0800</LastModified>
<ETag>97f9bd340940f3db2c547eacedd4ebe2</ETag>
<Size>9</Size>
</Part>
<Part>
<PartNumber>4</PartNumber>
<LastModified>2016-07-15T19:20:57 +0800</LastModified>
<ETag>7921f358c9e17b25f1291235b6cadf85</ETag>
<Size>9</Size>
</Part>
</ListPartsResult>
返回值的response
的字符形式可能如下:
<?xml version="1.0" encoding="UTF-8"?>
<ListPartsResult>
<Bucket>bucket2</Bucket>
<Key>d.txt</Key>
<UploadId>4685815523730016248</UploadId>
<Owner>
<ID>ProductID</ID>
</Owner>
<StorageClass>archive-standard</StorageClass>
<PartNumberMarker>0</PartNumberMarker>
<NextPartNumberMarker>4</NextPartNumberMarker>
<MaxParts>1000</MaxParts>
<IsTruncated>false</IsTruncated>
<Part>
<PartNumber>1</PartNumber>
<LastModified>2016-07-15T19:20:27 +0800</LastModified>
<ETag>b33df4c9833e4dcba58e72ea0a9fcd7f</ETag>
<Size>12</Size>
</Part>
<Part>
<PartNumber>2</PartNumber>
<LastModified>2016-07-15T19:20:38 +0800</LastModified>
<ETag>2e6ff8d5f6a559aef625f881d1fb20b4</ETag>
<Size>5</Size>
</Part>
<Part>
<PartNumber>3</PartNumber>
<LastModified>2016-07-15T19:20:47 +0800</LastModified>
<ETag>97f9bd340940f3db2c547eacedd4ebe2</ETag>
<Size>9</Size>
</Part>
<Part>
<PartNumber>4</PartNumber>
<LastModified>2016-07-15T19:20:57 +0800</LastModified>
<ETag>7921f358c9e17b25f1291235b6cadf85</ETag>
<Size>9</Size>
</Part>
</ListPartsResult>
-
ListPartsResult 列出已上传块信息 类型:容器 子节点:Bucket、Key、UploadId、Owner、StorageClass、PartNumberMarker、NextPartNumberMarker、MaxParts, IsTruncated、Part
-
Bucket 桶的名称 类型: String 父节点: ListPartsResult
-
Key 对象的Key 类型: String 父节点: ListPartsResult
-
UploadId 分块上传操作的ID 类型: String 父节点: ListPartsResult
-
ID 对象拥有者的ID 类型: String 父节点: Owner
-
DisplayName 对象的拥有者. 类型: String 父节点: Owner
-
Owner 桶拥有者的信息 子节点:ID, DisplayName 类型: 容器 父节点: ListPartsResult
-
StorageClass 存储级别. 类型: String 父节点: ListPartsResult
-
PartNumberMarker 上次List操作后的Part number 类型: Integer 父节点: ListPartsResult
-
NextPartNumberMarker 作为后续List操作的part-number-marker 类型: Integer 父节点: ListPartsResult
-
MaxParts 响应允许返回的的最大part数目 类型: Integer 父节点: ListPartsResult
-
IsTruncated 是否截断,如果因为设置了limit导致不是所有的数据集都返回了,则该值设置为true 类型: Boolean 父节点: ListPartsResult
-
Part 列出相关part信息 子节点:PartNumber, LastModified, ETag, Size 类型: String 父节点: ListPartsResult
-
PartNumber 识别特定part的一串数字 类型: Integer 父节点: Part
-
LastModified 该part上传的时间 类型: Date 父节点: Part
-
ETag 当该part被上传时返回 类型: String 父节点: Part
-
Size 已上传的 part数据的大小. 类型: Integer 父节点: Part
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
- response(xml.etree.ElementTree) -- 包含返回信息的xml对象。
List Multipart Uploads
使用举例:
nosclient.list_multipart_upload({bucket:'bucket'},func)
参数说明
- bucket(string) -- 桶名。
- kwargs -- 其他可选参数,如下。
- limit(integer) -- 限制响应中返回的记录个数。取值范围:0-1000,默认1000。
- key_marker(string) -- 指定某一uploads key,只有大于该key-marker的才会被列出。
返回值举例
18 Jul 09:43:08 - STATUS: 200
18 Jul 09:43:08 - HEADERS: { 'x-nos-request-id': '6213b3d00af100000155fbabcf8115fb',
'content-type': 'application/xml; charset=UTF-8',
'content-length': '455',
connection: 'close',
server: 'Jetty(6.1.11)' }
18 Jul 09:43:08 - BODY: <?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult>
<Bucket>bucket2</Bucket>
<NextKeyMarker>4685815523730016248</NextKeyMarker>
<IsTruncated>false</IsTruncated>
<Upload>
<Key>d.txt</Key>
<UploadId>4685815523730016248</UploadId>
<StorageClass>archive-standard</StorageClass>
<Owner>
<ID>ProductID</ID>
</Owner>
<Initiated>2016-07-15T19:19:12 +0800</Initiated>
</Upload>
</ListMultipartUploadsResult>
返回值的response
的字符形式可能如下:
<?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult>
<Bucket>bucket2</Bucket>
<NextKeyMarker>4685815523730016248</NextKeyMarker>
<IsTruncated>false</IsTruncated>
<Upload>
<Key>d.txt</Key>
<UploadId>4685815523730016248</UploadId>
<StorageClass>archive-standard</StorageClass>
<Owner>
<ID>ProductID</ID>
</Owner>
<Initiated>2016-07-15T19:19:12 +0800</Initiated>
</Upload>
</ListMultipartUploadsResult>
-
ListMultipartUploadsResult 响应容器元素 类型:容器 子节点:Bucket,KeyMarker,Upload,NextKeyMarker, owner
-
Bucket 对象的桶 类型:字符串 父节点:ListMultipartUploadsResult
-
NextKeyMarker 作为后续查询的key-marker 类型:String 父节点:ListMultipartUploadsResult
-
IsTruncated 是否截断,如果因为设置了limit导致不是所有的数据集都返回了,则该值设置为true 类型:Boolean 父节点: ListMultipartUploadsResult
-
Upload 类型:容器 子节点:Key,UploadId 父节点:ListMultipartUploadsResult
-
Key 对象的Key 类型:字符串 父节点:Upload
-
UploadId 分块上传操作的ID 类型String 父节点:Upload
-
ID 对象拥有者的ID 类型: String 父节点: Owner
-
DisplayName 对象的拥有者 类型: String 父节点: Owner
-
Owner 桶拥有者的信息 类型:容器 子节点:DisplayName|ID 父节点:Upload
-
StorageClass 存储级别 类型: String 父节点: Upload
-
Initiated 该分块上传操作被初始化的时间 类型:Date 父节点: Upload
-
ListMultipartUploadsResult.Prefix 当请求中包含了prefix参数时,响应中会填充这一prefix 类型:String 父节点: ListMultipartUploadsResult
返回值说明 返回值为字典类型
- x_nos_request_id(string) -- 唯一定位一个请求的ID号。
- response(xml.etree.ElementTree) -- 包含返回信息的xml对象。