nos-nodejs-sdk

1.0.0 • Public • Published

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-开头。

返回值举例

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-开头。

返回值举例

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对象。

Readme

Keywords

Package Sidebar

Install

npm i nos-nodejs-sdk

Weekly Downloads

2

Version

1.0.0

License

UNLICENSED

Last publish

Collaborators

  • hzliucheng