|
|
- # oss-js-sdk
-
- [![NPM version][npm-image]][npm-url]
- [![build status][travis-image]][travis-url]
- [![coverage][cov-image]][cov-url]
- [![David deps][david-image]][david-url]
-
- [npm-image]: https://img.shields.io/npm/v/ali-oss.svg?style=flat-square
- [npm-url]: https://npmjs.org/package/ali-oss
- [travis-image]: https://img.shields.io/travis/ali-sdk/ali-oss/master.svg?style=flat-square
- [travis-url]: https://travis-ci.org/ali-sdk/ali-oss.svg?branch=master
- [cov-image]: http://codecov.io/github/ali-sdk/ali-oss/coverage.svg?branch=master
- [cov-url]: http://codecov.io/github/ali-sdk/ali-oss?branch=master
- [david-image]: https://img.shields.io/david/ali-sdk/ali-oss.svg?style=flat-square
- [david-url]: https://david-dm.org/ali-sdk/ali-oss
-
- aliyun OSS(Object Storage Service) js client for Node and Browser env.
-
- `NOTE`: For SDK `5.X` document, please go to [README.md](https://github.com/ali-sdk/ali-oss/blob/5.x/README.md)
-
- ## Install
-
- ```bash
- npm install ali-oss --save
- ```
-
- ## Compatibility
-
- ### Node
-
- Node.js >= 8.0.0 required. You can use 4.x in Node.js < 8.
-
- ### Browser
-
- - IE >= 10 & Edge
- - Major versions of Chrome/Firefox/Safari
- - Major versions of Android/iOS/WP
-
- `Note`:
-
- - For Lower browsers you can refer to [PostObject](https://help.aliyun.com/document_detail/31988.html), if you want to see more practices ,please refer to [Web Post](https://help.aliyun.com/document_detail/31923.html)
-
- ### QA
-
- You can join DingDing Talk Group, [Group Link](https://qr.dingtalk.com/action/joingroup?code=v1,k1,E60EuCmxajfilkaR/kknRcGR9UissskPEXu/1td36z0=)
-
- <img src="task/dingding.jpg" height="400" title="dingding" width="300">
-
- ## License
-
- [MIT](LICENSE)
-
- # OSS Usage
-
- OSS, Object Storage Service. Equal to well known Amazon [S3](http://aws.amazon.com/s3/).
-
- All operation use es7 async/await to implement. All api is async function.
-
- ## Summary
-
- - [Node Usage](#node-usage)
- - [Browser Usage](#browser-usage)
- - [Data Regions](#data-regions)
- - [Create Account](#create-account)
- - [Create A Bucket Instance](#create-a-bucket-instance)
- - [oss(options)](#ossoptions)
- - [Bucket Operations](#bucket-operations)
-
- - Base
- - [.listBuckets(query[, options])](#listbucketsquery-options)
- - [.putBucket(name[, options])](#putbucketname-options)
- - [.useBucket(name)](#usebucketname)
- - [.deleteBucket(name[, options])](#deletebucketname-options)
- - [.getBucketInfo(name)](#getbucketinfoname)
- - [.getBucketStat(name)](#getbucketstatname)
- - [.getBucketLocation(name)](#getbucketlocationname)
- - ACL
- - [.putBucketACL(name, acl[, options])](#putbucketaclname-acl-options)
- - [.getBucketACL(name[, options])](#getbucketaclname-options)
- - Logging
- - [.putBucketLogging(name, prefix[, options])](#putbucketloggingname-prefix-options)
- - [.getBucketLogging(name[, options])](#getbucketloggingname-options)
- - [.deleteBucketLogging(name[, options])](#deletebucketloggingname-options)
- - Website
- - [.putBucketWebsite(name, config[, options])](#putbucketwebsitename-config-options)
- - [.getBucketWebsite(name[, options])](#getbucketwebsitename-options)
- - [.deleteBucketWebsite(name, region[, options])](#deletebucketwebsitename-options)
- - Referer
- - [.putBucketReferer(name, allowEmpty, referers[, options])](#putbucketreferername-allowempty-referers-options)
- - [.getBucketReferer(name[, options])](#getbucketreferername-options)
- - [.deleteBucketReferer(name[, options])](#deletebucketreferername-options)
- - Lifecycle
- - [.putBucketLifecycle(name, rules[, options])](#putbucketlifecyclename-rules-options)
- - [.getBucketLifecycle(name[, options])](#getbucketlifecyclename-options)
- - [.deleteBucketLifecycle(name[, options])](#deletebucketlifecyclename-options)
- - CORS
- - [.putBucketCORS(name, rules[, options])](#putbucketcorsname-rules-options)
- - [.getBucketCORS(name[, options])](#getbucketcorsname-options)
- - [.deleteBucketCORS(name[, options])](#deletebucketcorsname-options)
- - RequestPayment
- - [.getBucketRequestPayment(bucketName[, options])](#getbucketrequestpaymentbucketname-options)
- - [.putBucketRequestPayment(bucketName, payer[, options])](#putBucketRequestpaymentbucketname-payer-options)
- - BucketEncryption
- - [.putBucketEncryption(name[, rules])](#putbucketencryptionname-rules)
- - [.getBucketEncryption(name)](#getbucketencryptionname)
- - [.deleteBucketEncryption(name)](#deletebucketencryptionname)
- - tagging
- - [.putBucketTags(name, tag[, options])](#putBucketTagsname-tag-options)
- - [.getBucketTags(name, [, options])](#getBucketTagsname-options)
- - [.deleteBucketTags(name, [, options])](#deleteBucketTagsname-options)
- - policy
- - [.putBucketPolicy(name, policy[, options])](#putBucketPolicyname-policy-options)
- - [.getBucketPolicy(name, [, options])](#getBucketPolicyname-options)
- - [.deleteBucketPolicy(name, [, options])](#deleteBucketPolicyname-options)
- - versioning
- - [.getBucketVersioning(name, [, options])](#getBucketVersioningname-options)
- - [.putBucketVersioning(name, status[, options])](#putBucketVersioningname-status-options)
- - inventory
- - [.getBucketInventory(name, inventoryId[, options])](#getBucketInventoryname-inventoryid-options)
- - [.putBucketInventory(name, inventory[, options])](#putBucketInventoryname-inventory-options)
- - [.deleteBucketInventory(name, inventoryId[, options])](#deleteBucketInventoryname-inventoryid-options)
- - [.listBucketInventory(name, [, options])](#listBucketInventoryname-options)
- - worm
- - [.abortBucketWorm(name[, options])](#abortBucketWormname-options)
- - [.completeBucketWorm(name, wormId[, options])](#completeBucketWormname-wormId-options)
- - [.extendBucketWorm(name, wormId, days[, options])](#extendBucketWormname-wormId-days-options)
- - [.getBucketWorm(name[, options])](#getBucketWormname-options)
- - [.initiateBucketWorm(name, days[, options])](#initiateBucketWormname-days-options)
-
- - [Object Operations](#object-operations)
- - [.list(query[, options])](#listquery-options)
- - [.listV2(query[, options])](#listV2query-options)
- - [.getBucketVersions(query[, options])](#getBucketVersionsquery-options)
- - [.put(name, file[, options])](#putname-file-options)
- - [.putStream(name, stream[, options])](#putstreamname-stream-options)
- - [.append(name, file[, options])](#appendname-file-options)
- - [.getObjectUrl(name[, baseUrl])](#getobjecturlname-baseurl)
- - [.generateObjectUrl(name[, baseUrl])](#generateobjecturlname-baseurl)
- - [.head(name[, options])](#headname-options)
- - [.getObjectMeta(name[, options])](#getobjectmetaname-options)
- - [.get(name[, file, options])](#getname-file-options)
- - [.getStream(name[, options])](#getstreamname-options)
- - [.delete(name[, options])](#deletename-options)
- - [.copy(name, sourceName[, sourceBucket, options])](#copyname-sourcename-sourcebucket-options)
- - [.putMeta(name, meta[, options])](#putmetaname-meta-options)
- - [.deleteMulti(names[, options])](#deletemultinames-options)
- - [.signatureUrl(name[, options])](#signatureurlname-options)
- - [.asyncSignatureUrl(name[, options])](#signatureurlname-options)
- - [.signatureUrlV4(method, expires[, request, objectName, additionalHeaders])](#signatureurlv4method-expires-request-objectname-additionalheaders)
- - [.putACL(name, acl[, options])](#putaclname-acl-options)
- - [.getACL(name[, options])](#getaclname-options)
- - [.restore(name[, options])](#restorename-options)
- - [.putSymlink(name, targetName[, options])](#putsymlinkname-targetname-options)
- - [.getSymlink(name[, options])](#getsymlinkname-options)
- - [.initMultipartUpload(name[, options])](#initmultipartuploadname-options)
- - [.uploadPart(name, uploadId, partNo, file, start, end[, options])](#uploadpartname-uploadid-partno-file-start-end-options)
- - [.uploadPartCopy(name, uploadId, partNo, range, sourceData[, options])](#uploadpartcopyname-uploadid-partno-range-sourcedata-options)
- - [.completeMultipartUpload(name, uploadId, parts[, options])](#completemultipartuploadname-uploadid-parts-options)
- - [.multipartUpload(name, file[, options])](#multipartuploadname-file-options)
- - [.multipartUploadCopy(name, sourceData[, options])](#multipartuploadcopyname-sourcedata-options)
- - [.listParts(name, uploadId[, query, options])](#listpartsname-uploadid-query-options)
- - [.listUploads(query[, options])](#listuploadsquery-options)
- - [.abortMultipartUpload(name, uploadId[, options])](#abortmultipartuploadname-uploadid-options)
- - [.calculatePostSignature(policy)](#calculatePostSignaturepolicy)
- - [.getObjectTagging(name, [, options])](#getObjectTaggingname-options)
- - [.putObjectTagging(name, tag[, options])](#putObjectTaggingname-tag-options)
- - [.deleteObjectTagging(name, [, options])](#deleteObjectTaggingname-options)
- - [RTMP Operations](#rtmp-operations)
- - [.putChannel(id, conf[, options])](#putchannelid-conf-options)
- - [.getChannel(id[, options])](#getchannelid-options)
- - [.deleteChannel(id[, options])](#deletechannelid-options)
- - [.putChannelStatus(id, status[, options])](#putchannelstatusid-status-options)
- - [.getChannelStatus(id[, options])](#getchannelstatusid-options)
- - [.listChannels(query[, options])](#listchannelsquery-options)
- - [.getChannelHistory(id[, options])](#getchannelhistoryid-options)
- - [.createVod(id, name, time[, options])](#createvodid-name-time-options)
- - [.getRtmpUrl(channelId[, options])](#getrtmpurlchannelid-options)
- - [Create A Image Service Instance](#create-a-image-service-instance)
- - [oss.ImageClient(options)](#ossimageclientoptions)
- - [Image Operations](#image-operations)
- - [imgClient.get(name, file[, options])](#imgclientgetname-file-options)
- - [imgClient.getStream(name[, options])](#imgclientgetstreamname-options)
- - [imgClient.getExif(name[, options])](#imgclientgetexifname-options)
- - [imgClient.getInfo(name[, options])](#imgclientgetinfoname-options)
- - [imgClient.putStyle(name, style[, options])](#imgclientputstylename-style-options)
- - [imgClient.getStyle(name[, options])](#imgclientgetstylename-options)
- - [imgClient.listStyle([options])](#imgclientliststyleoptions)
- - [imgClient.deleteStyle(name[, options])](#imgclientdeletestylename-options)
- - [imgClient.signatureUrl(name)](#imgclientsignatureurlname)
- - [Known Errors](#known-errors)
-
- ## Node Usage
-
- ### Compatibility
-
- - Node: >= 8.0.0
-
- ### Basic usage
-
- 1.install SDK using npm
-
- ```
- npm install ali-oss --save
- ```
-
- 2.for example:
-
- ```js
- const OSS = require('ali-oss');
- const store = new OSS({
- region: '<oss region>',
- accessKeyId: '<Your accessKeyId>',
- accessKeySecret: '<Your accessKeySecret>',
- bucket: '<Your bucket name>'
- });
- ```
-
- ## Browser Usage
-
- You can use most of the functionalities of `ali-oss` in browser with
- some exceptions:
-
- - put object with streaming: no chunked encoding, we use multipart
- upload instead
- - get object to local file: we cannot manipulate file system in
- browser, we provide signed object url for downloading needs
- - bucket operations(listBuckets, putBucketLogging, etc) will fail: OSS
- server currently do not support CORS requests for bucket operations
- (will probably be fixed later)
-
- ### Compatibility
-
- - IE >= 10 & Edge
- - Major versions of Chrome/Firefox/Safari
- - Major versions of Android/iOS/WP
- > Note: Because some browsers do not support promises, you need to introduce promise compatible libraries.<br>
- > For example: IE10 and IE11 need to introduce a promise-polyfill.
-
- ### Setup
-
- #### Bucket setup
-
- As browser-side javascript involves CORS operations. You need to setup
- your bucket CORS rules to allow CORS operations:
-
- - set allowed origins to '\*'
- - allowed methods to 'PUT, GET, POST, DELETE, HEAD'
- - set allowed headers to '\*'
- - expose 'ETag' in expose headers
-
- #### STS setup
-
- As we don't want to expose the accessKeyId/accessKeySecret in the
- browser, a [common practice][oss-sts] is to use STS to grant temporary
- access.
-
- ### Basic usage
-
- Include the sdk lib in the `<script>` tag and you have `OSS` available
- for creating client.
-
- ```html
- // x.x.x The specific version number represented // we recommend introducing offline resources, because the usability of
- online resources depends on the stability of the cdn server.
- <!-- Introducing online resources -->
- <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-x.x.x.min.js"></script>
- <!-- Introducing offline resources -->
- <script src="./aliyun-oss-sdk-x.x.x.min.js"></script>
-
- <script type="text/javascript">
- const store = new OSS({
- region: 'oss-cn-hangzhou',
- accessKeyId: '<access-key-id>',
- accessKeySecret: '<access-key-secret>',
- bucket: '<bucket-name>',
- stsToken: '<security-token>'
- });
-
- store
- .list()
- .then(result => {
- console.log('objects: %j', result.objects);
- return store.put('my-obj', new OSS.Buffer('hello world'));
- })
- .then(result => {
- console.log('put result: %j', result);
- return store.get('my-obj');
- })
- .then(result => {
- console.log('get result: %j', result.content.toString());
- });
- </script>
- ```
-
- The full sample can be found [here][browser-sample].
-
- ### How to build
-
- ```bash
- npm run build-dist
- ```
-
- And see the build artifacts under `dist/`.
-
- ## Data Regions
-
- [OSS current data regions](https://help.aliyun.com/document_detail/31837.html).
-
- | region | country | city | endpoint | internal endpoint |
- | ------------------ | --------- | -------------- | ------------------------------- | ---------------------------------------- |
- | oss-cn-hangzhou | China | HangZhou | oss-cn-hangzhou.aliyuncs.com | oss-cn-hangzhou-internal.aliyuncs.com |
- | oss-cn-shanghai | China | ShangHai | oss-cn-shanghai.aliyuncs.com | oss-cn-shanghai-internal.aliyuncs.com |
- | oss-cn-qingdao | China | QingDao | oss-cn-qingdao.aliyuncs.com | oss-cn-qingdao-internal.aliyuncs.com |
- | oss-cn-beijing | China | BeiJing | oss-cn-beijing.aliyuncs.com | oss-cn-beijing-internal.aliyuncs.com |
- | oss-cn-shenzhen | China | ShenZhen | oss-cn-shenzhen.aliyuncs.com | oss-cn-shenzhen-internal.aliyuncs.com |
- | oss-cn-hongkong | China | HongKong | oss-cn-hongkong.aliyuncs.com | oss-cn-hongkong-internal.aliyuncs.com |
- | oss-us-west-1 | US | Silicon Valley | oss-us-west-1.aliyuncs.com | oss-us-west-1-internal.aliyuncs.com |
- | oss-ap-southeast-1 | Singapore | Singapore | oss-ap-southeast-1.aliyuncs.com | oss-ap-southeast-1-internal.aliyuncs.com |
-
- ## Create Account
-
- Go to [OSS website](http://www.aliyun.com/product/oss/?lang=en), create a new account for new user.
-
- After account created, you can create the OSS instance and get the `accessKeyId` and `accessKeySecret`.
-
- ## Create A Bucket Instance
-
- Each OSS instance required `accessKeyId`, `accessKeySecret` and `bucket`.
-
- ## oss(options)
-
- Create a Bucket store instance.
-
- options:
-
- - accessKeyId {String} access key you create on aliyun console website
- - accessKeySecret {String} access secret you create
- - [stsToken] {String} used by temporary authorization, detail [see](https://www.alibabacloud.com/help/doc-detail/32077.htm)
- - [refreshSTSToken] {Function} used by auto set `stsToken`、`accessKeyId`、`accessKeySecret` when sts info expires. return value must be object contains `stsToken`、`accessKeyId`、`accessKeySecret`
- - [refreshSTSTokenInterval] {number} use time (ms) of refresh STSToken interval it should be less than sts info expire interval, default is 300000ms(5min)
- - [bucket] {String} the default bucket you want to access
- If you don't have any bucket, please use `putBucket()` create one first.
- - [endpoint] {String} oss region domain. It takes priority over `region`. Set as extranet domain name, intranet domain name, accelerated domain name, etc. according to different needs. please see [endpoints](https://www.alibabacloud.com/help/doc-detail/31837.htm)
- - [region] {String} the bucket data region location, please see [Data Regions](#data-regions),
- default is `oss-cn-hangzhou`.
- - [internal] {Boolean} access OSS with aliyun internal network or not, default is `false`.
- If your servers are running on aliyun too, you can set `true` to save a lot of money.
- - [secure] {Boolean} instruct OSS client to use HTTPS (secure: true) or HTTP (secure: false) protocol.
- - [timeout] {String|Number} instance level timeout for all operations, default is `60s`.
- - [cname] {Boolean}, default false, access oss with custom domain name. if true, you can fill `endpoint` field with your custom domain name,
- - [isRequestPay] {Boolean}, default false, whether request payer function of the bucket is open, if true, will send headers `'x-oss-request-payer': 'requester'` to oss server.
- the details you can see [requestPay](https://help.aliyun.com/document_detail/91337.htm)
- - [useFetch] {Boolean}, default false, it just work in Browser, if true,it means upload object with
- `fetch` mode ,else `XMLHttpRequest`
- - [enableProxy] {Boolean}, Enable proxy request, default is false. **_NOTE:_** When enabling proxy request, please ensure that proxy-agent is installed.
- - [proxy] {String | Object}, proxy agent uri or options, default is null.
- - [retryMax] {Number}, used by auto retry send request count when request error is net error or timeout. **_NOTE:_** Not support `put` with stream, `putStream`, `append` with stream because the stream can only be consumed once
- - [maxSockets] {Number} Maximum number of sockets to allow per host. Default is infinity
- - [authorizationV4] {Boolean} Use V4 signature. Default is false.
-
- example:
-
- 1. basic usage
-
- ```js
- const OSS = require('ali-oss');
-
- const store = new OSS({
- accessKeyId: 'your access key',
- accessKeySecret: 'your access secret',
- bucket: 'your bucket name',
- region: 'oss-cn-hangzhou'
- });
- ```
-
- 2. use accelerate endpoint
-
- - Global accelerate endpoint: oss-accelerate.aliyuncs.com
- - Accelerate endpoint of regions outside mainland China: oss-accelerate-overseas.aliyuncs.com
-
- ```js
- const OSS = require('ali-oss');
-
- const store = new OSS({
- accessKeyId: 'your access key',
- accessKeySecret: 'your access secret',
- bucket: 'your bucket name',
- endpoint: 'oss-accelerate.aliyuncs.com'
- });
- ```
-
- 3. use custom domain
-
- ```js
- const OSS = require('ali-oss');
-
- const store = new OSS({
- accessKeyId: 'your access key',
- accessKeySecret: 'your access secret',
- cname: true,
- endpoint: 'your custome domain'
- });
- ```
-
- 4. use STS and refreshSTSToken
-
- ```js
- const OSS = require('ali-oss');
-
- const store = new OSS({
- accessKeyId: 'your STS key',
- accessKeySecret: 'your STS secret',
- stsToken: 'your STS token',
- refreshSTSToken: async () => {
- const info = await fetch('you sts server');
- return {
- accessKeyId: info.accessKeyId,
- accessKeySecret: info.accessKeySecret,
- stsToken: info.stsToken
- };
- },
- refreshSTSTokenInterval: 300000
- });
- ```
-
- 5. retry request with stream
-
- ```js
- for (let i = 0; i <= store.options.retryMax; i++) {
- try {
- const result = await store.putStream('<example-object>', fs.createReadStream('<example-path>'));
- console.log(result);
- break; // break if success
- } catch (e) {
- console.log(e);
- }
- }
- ```
-
- 6. use V4 signature, and use optional additionalHeaders option which type is a string array, and the values inside need to be included in the header.
-
- ```js
- const OSS = require('ali-oss');
-
- const store = new OSS({
- accessKeyId: 'your access key',
- accessKeySecret: 'your access secret',
- bucket: 'your bucket name',
- region: 'oss-cn-hangzhou',
- authorizationV4: true
- });
-
- try {
- const bucketInfo = await store.getBucketInfo('your bucket name');
- console.log(bucketInfo);
- } catch (e) {
- console.log(e);
- }
-
- try {
- const putObjectResult = await store.put('your bucket name', 'your object name', {
- headers: {
- // The headers of this request
- header1: 'value1',
- header2: 'value2'
- },
- // The keys of the request headers that need to be calculated into the V4 signature. Please ensure that these additional headers are included in the request headers.
- additionalHeaders: ['additional header1', 'additional header2']
- });
- console.log(putObjectResult);
- } catch (e) {
- console.log(e);
- }
- ```
-
- ## Bucket Operations
-
- ### .listBuckets(query[, options])
-
- List buckets in this account.
-
- parameters:
-
- - [query] {Object} query parameters, default is `null`
- - [prefix] {String} search buckets using `prefix` key
- - [marker] {String} search start from `marker`, including `marker` key
- - [max-keys] {String|Number} max buckets, default is `100`, limit to `1000`
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return buckets list on `buckets` properties.
-
- - buckets {Array<BucketMeta>} bucket meta info list
- Each `BucketMeta` will contains blow properties:
- - name {String} bucket name
- - region {String} bucket store data region, e.g.: `oss-cn-hangzhou-a`
- - creationDate {String} bucket create GMT date, e.g.: `2015-02-19T08:39:44.000Z`
- - storageClass {String} e.g.: `Standard`, `IA`, `Archive`
- - owner {Object} object owner, including `id` and `displayName`
- - isTruncated {Boolean} truncate or not
- - nextMarker {String} next marker string
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - List top 10 buckets
-
- ```js
- store
- .listBuckets({
- 'max-keys': 10
- })
- .then(result => {
- console.log(result);
- });
- ```
-
- ### .putBucket(name[, options])
-
- Create a new bucket.
-
- parameters:
-
- - name {String} bucket name
- If bucket exists and not belong to current account, will throw BucketAlreadyExistsError.
- If bucket not exists, will create a new bucket and set it's ACL.
- - [options] {Object} optional parameters
- - [acl] {String} include `private`,`public-read`,`public-read-write`
- - [storageClass] {String} the storage type include (Standard,IA,Archive)
- - [dataRedundancyType] {String} default `LRS`, include `LRS`,`ZRS`
- - [timeout] {Number} the operation timeout
-
- Success will return the bucket name on `bucket` properties.
-
- - bucket {String} bucket name
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Create a bucket name `helloworld` location on HongKong
-
- ```js
- store.putBucket('helloworld').then(result => {
- // use it by default
- store.useBucket('helloworld');
- });
- ```
-
- - Create a bucket name `helloworld` location on HongKong StorageClass `Archive`
-
- ```js
- await store.putBucket('helloworld', { StorageClass: 'Archive' });
- // use it by default
- store.useBucket('helloworld');
- ```
-
- ### .deleteBucket(name[, options])
-
- Delete an empty bucket.
-
- parameters:
-
- - name {String} bucket name
- If bucket is not empty, will throw BucketNotEmptyError.
- If bucket is not exists, will throw NoSuchBucketError.
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Delete the exists 'helloworld' bucket on 'oss-cn-hongkong'
-
- ```js
- store.deleteBucket('helloworld').then(result => {});
- ```
-
- ### .useBucket(name)
-
- Use the bucket.
-
- parameters:
-
- - name {String} bucket name
-
- example:
-
- - Use `helloworld` as the default bucket
-
- ```js
- store.useBucket('helloworld');
- ```
-
- ### .getBucketInfo(name)
-
- Get bucket information,include CreationDate、ExtranetEndpoint、IntranetEndpoint、Location、Name、StorageClass、
- Owner、AccessControlList、Versioning
-
- parameters:
-
- - name {String} bucket name
-
- example:
-
- - Use `helloworld` as the default bucket
-
- ```js
- store.getBucketInfo('helloworld').then(res => {
- console.log(res.bucket);
- });
- ```
-
- ### .getBucketStat(name)
-
- Call the GetBucketStat interface to get the storage capacity of the specified storage space (Bucket) and the number of files (Object).
-
- Calling this interface requires the oss:GetBucketStat permission.
- The data obtained by calling this interface is not real-time data and may be delayed for more than an hour.
- The point in time of the stored information obtained by calling this interface is not guaranteed to be up-to-date, i.e. the LastModifiedTime field returned by a later call to this interface may be smaller than the LastModifiedTime field returned by a previous call to this interface.
-
- parameters:
-
- - name {String} bucket name
-
- Success will return:
-
- - stat {Object} container for the BucketStat structure:
-
- - Storage {String} the total storage capacity of the Bucket, in bytes.
- - ObjectCount {String} total number of Objects in the Bucket。
- - MultipartUploadCount {String} the number of Multipart Uploads in the Bucket that have been initialized but not yet completed (Complete) or not yet aborted (Abort).
- - LiveChannelCount {String} the number of Live Channels in the Bucket.
- - LastModifiedTime {String} the point in time, in timestamps, when the storage information was retrieved.
- - StandardStorage {String} the amount of storage of the standard storage type, in bytes.
- - StandardObjectCount {String} the number of objects of the standard storage type.
- - InfrequentAccessStorage {String} the amount of billed storage for the low-frequency storage type, in bytes.
- - InfrequentAccessRealStorage {String} the actual storage amount of the low-frequency storage type, in bytes.
- - InfrequentAccessObjectCount {String} the number of Objects of the low-frequency storage type.
- - ArchiveStorage {String} the amount of billed storage for the archive storage type, in bytes.
- - ArchiveRealStorage {String} the actual storage amount of the archive storage type, in bytes.
- - ArchiveObjectCount {String} the number of objects of the archive storage type.
- - ColdArchiveStorage {String} the amount of billed storage for the cold archive storage type, in bytes.
- - ColdArchiveRealStorage {String} the actual storage amount in bytes for the cold archive storage type.
- - ColdArchiveObjectCount {String} the number of objects of the cold archive storage type.
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - If you don't fill in the name, the default is the bucket defined during initialization.
-
- ```js
- store.getBucketStat().then(res => console.log(res));
- ```
-
- ### .getBucketLocation(name)
-
- Get bucket location
-
- parameters:
-
- - name {String} bucket name
-
- example:
-
- - Use `helloworld` as the default bucket
-
- ```js
- store.getBucketLocation('helloworld').then(res => {
- console.log(res.location);
- });
- ```
-
- ---
-
- ### .putBucketACL(name, acl[, options])
-
- Update the bucket ACL.
-
- parameters:
-
- - name {String} bucket name
- - acl {String} access control list, current available: `public-read-write`, `public-read` and `private`
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Set bucket `helloworld` to `public-read-write`
-
- ```js
- store.putBucketACL('helloworld', 'public-read-write').then(result => {});
- ```
-
- ### .getBucketACL(name[, options])
-
- Get the bucket ACL.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - acl {String} acl settiongs string
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Get bucket `helloworld`
-
- ```js
- store.getBucketACL('helloworld').then(result => {
- console.log(result.acl);
- });
- ```
-
- ---
-
- ### .putBucketLogging(name, prefix[, options])
-
- Update the bucket logging settings.
- Log file will create every one hour and name format: `<prefix><bucket>-YYYY-mm-DD-HH-MM-SS-UniqueString`.
-
- parameters:
-
- - name {String} bucket name
- - [prefix] {String} prefix path name to store the log files
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Enable bucket `helloworld` logging and save with prefix `logs/`
-
- ```js
- store.putBucketLogging('helloworld', 'logs/').then(result => {});
- ```
-
- ### .getBucketLogging(name[, options])
-
- Get the bucket logging settings.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - enable {Boolean} enable logging or not
- - prefix {String} prefix path name to store the log files, maybe `null`
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Get bucket `helloworld` logging settings
-
- ```js
- store.getBucketLogging('helloworld').then(result => {
- console.log(result.enable, result.prefix);
- });
- ```
-
- ### .deleteBucketLogging(name[, options])
-
- Delete the bucket logging settings.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ---
-
- ### .putBucketWebsite(name, config[, options])
-
- Set the bucket as a static website.
-
- parameters:
-
- - name {String} bucket name
- - config {Object} website config, contains blow properties:
- - index {String} default page, e.g.: `index.html`
- - [error] {String} error page, e.g.: 'error.html'
- - [supportSubDir] {String} default vaule false
- - [type] {String} default value 0
- - [routingRules] {Array} RoutingRules
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- ```js
- store
- .putBucketWebsite('hello', {
- index: 'index.html'
- })
- .then(result => {});
- ```
-
- ### .getBucketWebsite(name[, options])
-
- Get the bucket website config.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - index {String} index page
- - error {String} error page, maybe `null`
- - supportSubDir {String}
- - type {String}
- - routingRules {Array}
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ### .deleteBucketWebsite(name[, options])
-
- Delete the bucket website config.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ---
-
- ### .putBucketReferer(name, allowEmpty, referers[, options])
-
- Set the bucket request `Referer` white list.
-
- parameters:
-
- - name {String} bucket name
- - allowEmpty {Boolean} allow empty request referer or not
- - referers {Array<String>} `Referer` white list, e.g.:
- ```js
- ['https://npm.taobao.org', 'http://cnpmjs.org'];
- ```
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- ```js
- store.putBucketReferer('hello', false, ['https://npm.taobao.org', 'http://cnpmjs.org']).then(result => {});
- ```
-
- ### .getBucketReferer(name[, options])
-
- Get the bucket request `Referer` white list.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - allowEmpty {Boolean} allow empty request referer or not
- - referers {Array<String>} `Referer` white list
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ### .deleteBucketReferer(name[, options])
-
- Delete the bucket request `Referer` white list.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ---
-
- ### .putBucketLifecycle(name, rules[, options])
-
- Set the bucket object lifecycle.
-
- parameters:
-
- - name {String} bucket name
- - rules {Array<Rule>} rule config list, each `Rule` will contains blow properties:
- - [id] {String} rule id, if not set, OSS will auto create it with random string.
- - prefix {String} store prefix
- - status {String} rule status, allow values: `Enabled` or `Disabled`
- - [expiration] {Object} specifies the expiration attribute of the lifecycle rules for the object.
- - [days] {Number|String} expire after the `days`
- - [createdBeforeDate] {String} expire date, e.g.: `2022-10-11T00:00:00.000Z`
- - [expiredObjectDeleteMarker] {String} value `true`
- `createdBeforeDate` and `days` and `expiredObjectDeleteMarker` must have one.
- - [abortMultipartUpload] {Object} Specifies the expiration attribute of the multipart upload tasks that are not complete.
- - [days] {Number|String} expire after the `days`
- - [createdBeforeDate] {String} expire date, e.g.: `2022-10-11T00:00:00.000Z`
- `createdBeforeDate` and `days` must have one.
- - [transition] {Object} Specifies the time when an object is converted to the IA or archive storage class during a valid life cycle.
- - storageClass {String} Specifies the storage class that objects that conform to the rule are converted into. allow values: `IA` or `Archive` or `ColdArchive` or `DeepColdArchive`
- - [days] {Number|String} expire after the `days`
- - [createdBeforeDate] {String} expire date, e.g.: `2022-10-11T00:00:00.000Z`
- `createdBeforeDate` and `days` must have one.
- - [noncurrentVersionTransition] {Object} Specifies the time when an object is converted to the IA or archive storage class during a valid life cycle.
- - storageClass {String} Specifies the storage class that history objects that conform to the rule are converted into. allow values: `IA` or `Archive` or `ColdArchive` or `DeepColdArchive`
- - noncurrentDays {String} expire after the `noncurrentDays`
- `expiration`、 `abortMultipartUpload`、 `transition`、 `noncurrentVersionTransition` must have one.
- - [noncurrentVersionExpiration] {Object} specifies the expiration attribute of the lifecycle rules for the history object.
- - noncurrentDays {String} expire after the `noncurrentDays`
- - [tag] {Object} Specifies the object tag applicable to a rule. Multiple tags are supported.
- - key {String} Indicates the tag key.
- - value {String} Indicates the tag value.
- `tag` cannot be used with `abortMultipartUpload`
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- ```js
- store
- .putBucketLifecycle('hello', [
- {
- id: 'delete after one day',
- prefix: 'logs/',
- status: 'Enabled',
- days: 1
- },
- {
- prefix: 'logs2/',
- status: 'Disabled',
- date: '2022-10-11T00:00:00.000Z'
- }
- ])
- .then(result => {});
- ```
-
- example: for history with noncurrentVersionExpiration
-
- ```js
- const result = await store.putBucketLifecycle(bucket, [
- {
- id: 'expiration1',
- prefix: 'logs/',
- status: 'Enabled',
- expiration: {
- days: '1'
- },
- noncurrentVersionExpiration: {
- noncurrentDays: '1'
- }
- }
- ]);
- console.log(result);
- ```
-
- example: for history with expiredObjectDeleteMarker
-
- ```js
- const result = await store.putBucketLifecycle(bucket, [
- {
- id: 'expiration1',
- prefix: 'logs/',
- status: 'Enabled',
- expiration: {
- expiredObjectDeleteMarker: 'true'
- },
- noncurrentVersionExpiration: {
- noncurrentDays: '1'
- }
- }
- ]);
- console.log(result);
- ```
-
- example: for history with noncurrentVersionTransition
-
- ```js
- const result = await store.putBucketLifecycle(bucket, [
- {
- id: 'expiration1',
- prefix: 'logs/',
- status: 'Enabled',
- noncurrentVersionTransition: {
- noncurrentDays: '10',
- storageClass: 'IA'
- }
- }
- ]);
- console.log(result);
- ```
-
- ### .getBucketLifecycle(name[, options])
-
- Get the bucket object lifecycle.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - rules {Array<Rule>} the lifecycle rule list
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ### .deleteBucketLifecycle(name[, options])
-
- Delete the bucket object lifecycle.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ---
-
- ### .putBucketCORS(name, rules[, options])
-
- Set CORS rules of the bucket object
-
- parameters:
-
- - name {String} bucket name
- - rules {Array<Rule>} rule config list, each `Rule` will contains below properties:
- - allowedOrigin {String/Array} configure for Access-Control-Allow-Origin header
- - allowedMethod {String/Array} configure for Access-Control-Allow-Methods header
- - [allowedHeader] {String/Array} configure for Access-Control-Allow-Headers header
- - [exposeHeader] {String/Array} configure for Access-Control-Expose-Headers header
- - [maxAgeSeconds] {String} configure for Access-Control-Max-Age header
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- ```js
- store
- .putBucketCORS('hello', [
- {
- allowedOrigin: '*',
- allowedMethod: ['GET', 'HEAD']
- }
- ])
- .then(result => {});
- ```
-
- ### .getBucketCORS(name[, options])
-
- Get CORS rules of the bucket object.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - rules {Array<Rule>} the CORS rule list
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ### .deleteBucketCORS(name[, options])
-
- Delete CORS rules of the bucket object.
-
- parameters:
-
- - name {String} bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- ### .getBucketRequestPayment(bucketName[, options])
-
- get RequestPayment value of the bucket object.
-
- parameters:
-
- - bucketName {String} bucket name
- - [options] {Object} optional parameters
-
- Success will return:
-
- - status {Number} response status
- - payer {String} payer, BucketOwner or Requester
- - res {Object} response info, including
- - data {Buffer} xml
-
- ---
-
- ### .putBucketRequestPayment(bucketName, payer[, options])
-
- put RequestPayment value of the bucket object.
-
- parameters:
-
- - bucketName {String}
- - payer {String} payer
- - [options] {Object} optional parameters
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .putBucketEncryption(name, rules)
-
- put BucketEncryption value of the bucket object.
-
- parameters:
-
- - name {String} bucket name
- - [rules] {Object} parameters
- - SSEAlgorithm {String} encryption type, expect AES256 or KMS
- - {KMSMasterKeyID} {String} needed when encryption type is KMS
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .getBucketEncryption(name)
-
- get BucketEncryption rule value of the bucket object.
-
- parameters:
-
- - name {String} bucket name
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
- - encryption {Object} rules
- - SSEAlgorithm {String} encryption type, AES256 or KMS
- - {KMSMasterKeyID} {String} will be return when encryption type is KMS
-
- ---
-
- ### .deleteBucketEncryption(name)
-
- delete BucketEncryption rule value of the bucket object.
-
- parameters:
-
- - name {String} bucket name
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .putBucketTags(name, tag[, options])
-
- Adds tags for a bucket or modify the tags for a bucket.
-
- parameters:
-
- - name {String} the object name
- - tag {Object} tag, eg. `{var1: value1,var2:value2}`
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .getBucketTags(name[, options])
-
- Obtains the tags for a bucket.
-
- parameters:
-
- - name {String} the object name
- - [options] {Object} optional args
-
- Success will return:
-
- - tag {Object} the tag of object
- - res {Object} response info
-
- ---
-
- ### .deleteBucketTags(name[, options])
-
- Deletes the tags added for a bucket.
-
- parameters:
-
- - name {String} the object name
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .putBucketPolicy(name, policy[, options])
-
- Adds or modify policy for a bucket.
-
- parameters:
-
- - name {String} the bucket name
- - policy {Object} bucket policy
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- example:
-
- ```js
- const policy = {
- Version: '1',
- Statement: [
- {
- Action: ['oss:PutObject', 'oss:GetObject'],
- Effect: 'Deny',
- Principal: ['1234567890'],
- Resource: ['acs:oss:*:1234567890:*/*']
- }
- ]
- };
- const result = await store.putBucketPolicy(bucket, policy);
- console.log(result);
- ```
-
- ---
-
- ### .getBucketPolicy(name[, options])
-
- Obtains the policy for a bucket.
-
- parameters:
-
- - name {String} the bucket name
- - [options] {Object} optional args
-
- Success will return:
-
- - policy {Object} the policy of bucket, if not exist, the value is null
- - res {Object} response info
- - status {Number} response status
-
- ---
-
- ### .deleteBucketPolicy(name[, options])
-
- Deletes the policy added for a bucket.
-
- parameters:
-
- - name {String} the bucket name
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .getBucketVersioning(name[, options])
-
- Obtains the version status of an object
-
- parameters:
-
- - name {String} the bucket name
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - versionStatus {String | undefined} version status, `Suspended` or `Enabled`. default value: `undefined`
- - res {Object} response info
-
- ---
-
- ### .putBucketVersioning(name, status[, options])
-
- set the version status of an object
-
- parameters:
-
- - name {String} the bucket name
- - status {String} version status, allow values: `Enabled` or `Suspended`
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .getBucketInventory(name, inventoryId[, options])
-
- get bucket inventory by inventory-id
-
- parameters:
-
- - name {String} the bucket name
- - inventoryId {String} inventory-id
- - [options] {Object} optional args
-
- Success will return:
-
- - inventory {Inventory}
- - status {Number} response status
- - res {Object} response info
-
- ```js
- async function getBucketInventoryById() {
- try {
- const result = await store.getBucketInventory('bucket', 'inventoryid');
- console.log(result.inventory);
- } catch (err) {
- console.log(err);
- }
- }
-
- getBucketInventoryById();
- ```
-
- ### putBucketInventory(name, inventory[, options])
-
- set bucket inventory
-
- parameters:
-
- - name {String} the bucket name
- - inventory {Inventory} inventory config
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ```ts
- type Field =
- 'Size | LastModifiedDate | ETag | StorageClass | IsMultipartUploaded | EncryptionStatus | ObjectAcl | TaggingCount | ObjectType | Crc64';
- interface Inventory {
- id: string;
- isEnabled: true | false;
- prefix?: string;
- OSSBucketDestination: {
- format: 'CSV';
- accountId: string;
- rolename: string;
- bucket: string;
- prefix?: string;
- encryption?:
- | { 'SSE-OSS': '' }
- | {
- 'SSE-KMS': {
- keyId: string;
- };
- };
- };
- frequency: 'Daily' | 'Weekly';
- includedObjectVersions: 'Current' | 'All';
- optionalFields?: {
- field?: Field[];
- };
- }
- ```
-
- ```js
- const inventory = {
- id: 'default',
- isEnabled: false, // `true` | `false`
- prefix: 'ttt', // filter prefix
- OSSBucketDestination: {
- format: 'CSV',
- accountId: '1817184078010220',
- rolename: 'AliyunOSSRole',
- bucket: 'your bucket',
- prefix: 'test'
- //encryption: {'SSE-OSS': ''},
- /*
- encryption: {
- 'SSE-KMS': {
- keyId: 'test-kms-id';
- };,
- */
- },
- frequency: 'Daily', // `WEEKLY` | `Daily`
- includedObjectVersions: 'All', // `All` | `Current`
- optionalFields: {
- field: [
- 'Size',
- 'LastModifiedDate',
- 'ETag',
- 'StorageClass',
- 'IsMultipartUploaded',
- 'EncryptionStatus',
- 'ObjectAcl',
- 'TaggingCount',
- 'ObjectType',
- 'Crc64'
- ]
- }
- };
-
- async function putInventory() {
- const bucket = 'Your Bucket Name';
- try {
- await store.putBucketInventory(bucket, inventory);
- } catch (err) {
- console.log(err);
- }
- }
-
- putInventory();
- ```
-
- ### deleteBucketInventory(name, inventoryId[, options])
-
- delete bucket inventory by inventory-id
-
- parameters:
-
- - name {String} the bucket name
- - inventoryId {String} inventory-id
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ### listBucketInventory(name[, options])
-
- list bucket inventory
-
- parameters:
-
- - name {String} the bucket name
- - [options] {Object} optional args
- - continuationToken used by search next page
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- example:
-
- ```js
- async function listBucketInventory() {
- const bucket = 'Your Bucket Name';
- let nextContinuationToken;
- // list all inventory of the bucket
- do {
- const result = await store.listBucketInventory(bucket, nextContinuationToken);
- console.log(result.inventoryList);
- nextContinuationToken = result.nextContinuationToken;
- } while (nextContinuationToken);
- }
-
- listBucketInventory();
- ```
-
- ### .abortBucketWorm(name[, options])
-
- used to delete an unlocked retention policy.
-
- parameters:
-
- - name {String} the bucket name
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .completeBucketWorm(name, wormId[, options])
-
- used to lock a retention policy.
-
- parameters:
-
- - name {String} the bucket name
- - wormId {String} worm id
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .extendBucketWorm(name, wormId, days[, options])
-
- used to extend the retention period of objects in a bucket whose retention policy is locked.
-
- parameters:
-
- - name {String} the bucket name
- - wormId {String} worm id
- - days {String | Number} retention days
- - [options] {Object} optional args
-
- Success will return:
-
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .getBucketWorm(name[, options])
-
- used to query the retention policy information of the specified bucket.
-
- parameters:
-
- - name {String} the bucket name
- - [options] {Object} optional args
-
- Success will return:
-
- - wormId {String} worm id
- - state {String} `Locked` or `InProgress`
- - days {String} retention days
- - creationDate {String}
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ### .initiateBucketWorm(name, days[, options])
-
- create a retention policy.
-
- parameters:
-
- - name {String} the bucket name
- - days {String | Number}} set retention days
- - [options] {Object} optional args
-
- Success will return:
-
- - wormId {String} worm id
- - status {Number} response status
- - res {Object} response info
-
- ---
-
- ## Object Operations
-
- All operations function return Promise, except `signatureUrl`.
-
- ### .put(name, file[, options])
-
- Add an object to the bucket.
-
- parameters:
-
- - name {String} object name store on OSS
- - file {String|Buffer|ReadStream|File(only support Browser)|Blob(only support Browser)} object local path, content buffer or ReadStream content instance use in Node, Blob and html5 File
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout (ms)
- - [mime] {String} custom mime, will send with `Content-Type` entity header
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- e.g.: `{ uid: 123, pid: 110 }`
- - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br>
- - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL.
- - [host] {String} The host header value for initiating callback requests.
- - body {String} The value of the request body when a callback is initiated, for example, `key=${key}&etag=${etag}&my_var=${x:my_var}`.
- - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value.
- - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client.
- - [customValue] {Object} Custom parameters are a map of key-values<br>
- e.g.:
- ```js
- var customValue = { var1: 'value1', var2: 'value2' };
- ```
- - [headers] {Object} extra headers
- - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache`
- - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename`
- - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip`
- - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT`
- - See more: [PutObject](https://help.aliyun.com/document_detail/31978.html#title-yxe-96d-x61)
- - [disabledMD5] {Boolean} default true, it just work in Browser. if false,it means that MD5 is automatically calculated for uploaded files. **_NOTE:_** Synchronous computing tasks will block the main process
-
- Success will return the object information.
-
- object:
-
- - name {String} object name
- - data {Object} callback server response data, sdk use JSON.parse() return
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Add an object through local file path
-
- ```js
- const filepath = '/home/ossdemo/demo.txt';
- store.put('ossdemo/demo.txt', filepath).then((result) => {
- console.log(result);
- });
-
- // {
- // name: 'ossdemo/demo.txt',
- // res: {
- // status: 200,
- // headers: {
- // date: 'Tue, 17 Feb 2015 13:28:17 GMT',
- // 'content-length': '0',
- // connection: 'close',
- // etag: '"BF7A03DA01440845BC5D487B369BC168"',
- // server: 'AliyunOSS',
- // 'x-oss-request-id': '54E341F1707AA0275E829244'
- // },
- // size: 0,
- // rt: 92
- // }
- // }
- ```
-
- - Add an object through content buffer
-
- ```js
- store.put('ossdemo/buffer', Buffer.from('foo content')).then((result) => {
- console.log(result);
- });
-
- // {
- // name: 'ossdemo/buffer',
- // url: 'http://demo.oss-cn-hangzhou.aliyuncs.com/ossdemo/buffer',
- // res: {
- // status: 200,
- // headers: {
- // date: 'Tue, 17 Feb 2015 13:28:17 GMT',
- // 'content-length': '0',
- // connection: 'close',
- // etag: '"xxx"',
- // server: 'AliyunOSS',
- // 'x-oss-request-id': '54E341F1707AA0275E829243'
- // },
- // size: 0,
- // rt: 92
- // }
- // }
- ```
-
- - Add an object through readstream
-
- ```js
- const filepath = '/home/ossdemo/demo.txt';
- store.put('ossdemo/readstream.txt', fs.createReadStream(filepath)).then((result) => {
- console.log(result);
- });
-
- // {
- // name: 'ossdemo/readstream.txt',
- // url: 'http://demo.oss-cn-hangzhou.aliyuncs.com/ossdemo/readstream.txt',
- // res: {
- // status: 200,
- // headers: {
- // date: 'Tue, 17 Feb 2015 13:28:17 GMT',
- // 'content-length': '0',
- // connection: 'close',
- // etag: '"BF7A03DA01440845BC5D487B369BC168"',
- // server: 'AliyunOSS',
- // 'x-oss-request-id': '54E341F1707AA0275E829242'
- // },
- // size: 0,
- // rt: 92
- // }
- // }
- ```
-
- ### .putStream(name, stream[, options])
-
- Add a stream object to the bucket.
-
- parameters:
-
- - name {String} object name store on OSS
- - stream {ReadStream} object ReadStream content instance
- - [options] {Object} optional parameters
- - [contentLength] {Number} the stream length, `chunked encoding` will be used if absent
- - [timeout] {Number} the operation timeout
- - [mime] {String} custom mime, will send with `Content-Type` entity header
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- e.g.: `{ uid: 123, pid: 110 }`
- - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br>
- - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL.
- - [host] {String} The host header value for initiating callback requests.
- - body {String} The value of the request body when a callback is initiated, for example, key=${key}&etag=${etag}&my_var=${x:my_var}.
- - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value.
- - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client.
- - [customValue] {Object} Custom parameters are a map of key-values<br>
- e.g.:
- ```js
- var customValue = { var1: 'value1', var2: 'value2' };
- ```
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache`
- - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename`
- - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip`
- - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT`
-
- Success will return the object information.
-
- object:
-
- - name {String} object name
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Add an object through readstream
-
- ```js
- const filepath = '/home/ossdemo/demo.txt';
- store.putStream('ossdemo/readstream.txt', fs.createReadStream(filepath)).then((result) => {
- console.log(result);
- });
-
- // {
- // name: 'ossdemo/readstream.txt',
- // url: 'http://demo.oss-cn-hangzhou.aliyuncs.com/ossdemo/readstream.txt',
- // res: {
- // status: 200,
- // headers: {
- // date: 'Tue, 17 Feb 2015 13:28:17 GMT',
- // 'content-length': '0',
- // connection: 'close',
- // etag: '"BF7A03DA01440845BC5D487B369BC168"',
- // server: 'AliyunOSS',
- // 'x-oss-request-id': '54E341F1707AA0275E829242'
- // },
- // size: 0,
- // rt: 92
- // }
- // }
- ```
-
- ### .append(name, file[, options])
-
- Append an object to the bucket, it's almost same as put, but it can add content to existing object rather than override it.
-
- All parameters are same as put except for options.position
-
- - name {String} object name store on OSS
- - file {String|Buffer|ReadStream} object local path, content buffer or ReadStream content instance
- - [options] {Object} optional parameters
- - [position] {String} specify the position which is the content length of the latest object
- - [timeout] {Number} the operation timeout
- - [mime] {String} custom mime, will send with `Content-Type` entity header
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- e.g.: `{ uid: 123, pid: 110 }`
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache`
- - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename`
- - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip`
- - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT`
-
- object:
-
- - name {String} object name
- - url {String} the url of oss
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - nextAppendPosition {String} the next position(The browser needs to set cross domain and expose the x-oss-next-append-position header)
-
- example:
-
- ```js
- let object = await store.append('ossdemo/buffer', Buffer.from('foo'));
-
- // append content to the existing object
- object = await store.append('ossdemo/buffer', Buffer.from('bar'), {
- position: object.nextAppendPosition
- });
- ```
-
- ### .getObjectUrl(name[, baseUrl])
-
- Get the Object url.
- If provide `baseUrl`, will use `baseUrl` instead the default `endpoint`.
-
- e.g.:
-
- ```js
- const cdnUrl = store.getObjectUrl('foo/bar.jpg', 'https://mycdn.domian.com');
- // cdnUrl should be `https://mycdn.domian.com/foo/bar.jpg`
- ```
-
- ### .generateObjectUrl(name[, baseUrl])
-
- Get the Object url.
- If provide `baseUrl`, will use `baseUrl` instead the default `bucket and endpoint `.
- Suggest use generateObjectUrl instead of getObjectUrl.
-
- e.g.:
-
- ```js
- const url = store.generateObjectUrl('foo/bar.jpg');
- // cdnUrl should be `https://${bucketname}.${endpotint}foo/bar.jpg`
-
- const cdnUrl = store.generateObjectUrl('foo/bar.jpg', 'https://mycdn.domian.com');
- // cdnUrl should be `https://mycdn.domian.com/foo/bar.jpg`
- ```
-
- ### .head(name[, options])
-
- Head an object and get the meta info.
-
- parameters:
-
- - name {String} object name store on OSS
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'If-Modified-Since' object modified after this time will return 200 and object meta,
- otherwise return 304 not modified
- - 'If-Unmodified-Since' object modified before this time will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-Match' object etag equal this will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-None-Match' object etag not equal this will return 200 and object meta,
- otherwise return 304 not modified
-
- Success will return the object's meta information.
-
- object:
-
- - status {Number} response status, maybe 200 or 304
- - meta {Object} object user meta, if not set on `put()`, will return null.
- If return status 304, meta will be null too
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - [x-oss-version-id] return in multiversion
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Head an exists object and get user meta
-
- ```js
- await this.store.put('ossdemo/head-meta', Buffer.from('foo'), {
- meta: {
- uid: 1,
- path: 'foo/demo.txt'
- }
- });
- const object = await this.store.head('ossdemo/head-meta');
- console.log(object);
-
- // {
- // status: 200,
- // meta: {
- // uid: '1',
- // path: 'foo/demo.txt'
- // },
- // res: { ... }
- // }
- ```
-
- - Head a not exists object
-
- ```js
- const object = await this.store.head('ossdemo/head-meta');
- // will throw NoSuchKeyError
- ```
-
- ### .getObjectMeta(name[, options])
-
- Get an object meta info include ETag、Size、LastModified and so on, not return object content.
-
- parameters:
-
- - name {String} object name store on OSS
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
-
- Success will return the object's meta information.
-
- object:
-
- - status {Number} response status
- - res {Object} response info, including
- - headers {Object} response headers
-
- example:
-
- - Head an exists object and get object meta info
-
- ```js
- await this.store.put('ossdemo/object-meta', Buffer.from('foo'));
- const object = await this.store.getObjectMeta('ossdemo/object-meta');
- console.log(object);
-
- // {
- // status: 200,
- // res: { ... }
- // }
- ```
-
- ### .get(name[, file, options])
-
- Get an object from the bucket.
-
- parameters:
-
- - name {String} object name store on OSS
- - [file] {String|WriteStream|Object} file path or WriteStream instance to store the content
- If `file` is null or ignore this parameter, function will return info contains `content` property.
- If `file` is Object, it will be treated as options.
- - [options] {Object} optional parameters
- - [versionId] {String} the version id of history object
- - [timeout] {Number} the operation timeout
- - [process] {String} image process params, will send with `x-oss-process`
- e.g.: `{process: 'image/resize,w_200'}`
- - [responseCacheControl] {String} default `no-cache`, (only support Browser). response-cache-control, will response with HTTP Header `Cache-Control`
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'Range' get specifying range bytes content, e.g.: `Range: bytes=0-9`
- - 'If-Modified-Since' object modified after this time will return 200 and object meta,
- otherwise return 304 not modified
- - 'If-Unmodified-Since' object modified before this time will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-Match' object etag equal this will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-None-Match' object etag not equal this will return 200 and object meta,
- otherwise return 304 not modified
-
- Success will return the info contains response.
-
- object:
-
- - [content] {Buffer} file content buffer if `file` parameter is null or ignore
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If object not exists, will throw NoSuchKeyError.
-
- example:
-
- - Get an exists object and store it to the local file
-
- ```js
- const filepath = '/home/ossdemo/demo.txt';
- await store.get('ossdemo/demo.txt', filepath);
- ```
-
- \_ Store object to a writestream
-
- ```js
- await store.get('ossdemo/demo.txt', somestream);
- ```
-
- - Get an object content buffer
-
- ```js
- const result = await store.get('ossdemo/demo.txt');
- console.log(Buffer.isBuffer(result.content));
- ```
-
- - Get a processed image and store it to the local file
-
- ```js
- const filepath = '/home/ossdemo/demo.png';
- await store.get('ossdemo/demo.png', filepath, { process: 'image/resize,w_200' });
- ```
-
- - Get a not exists object
-
- ```js
- const filepath = '/home/ossdemo/demo.txt';
- await store.get('ossdemo/not-exists-demo.txt', filepath);
- // will throw NoSuchKeyError
- ```
-
- - Get a historic version object
-
- ```js
- const filepath = '/home/ossdemo/demo.txt';
- const versionId = 'versionId string';
- await store.get('ossdemo/not-exists-demo.txt', filepath, {
- versionId
- });
- ```
-
- - If `file` is Object, it will be treated as options.
-
- ```js
- const versionId = 'versionId string';
- await store.get('ossdemo/not-exists-demo.txt', { versionId });
- ```
-
- ### .getStream(name[, options])
-
- Get an object read stream.
-
- parameters:
-
- - name {String} object name store on OSS
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [process] {String} image process params, will send with `x-oss-process`
- - [headers] {Object} extra headers
- - 'If-Modified-Since' object modified after this time will return 200 and object meta,
- otherwise return 304 not modified
- - 'If-Unmodified-Since' object modified before this time will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-Match' object etag equal this will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-None-Match' object etag not equal this will return 200 and object meta,
- otherwise return 304 not modified
-
- Success will return the stream instance and response info.
-
- object:
-
- - stream {ReadStream} readable stream instance. If response status is not `200`, stream will be `null`.
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If object not exists, will throw NoSuchKeyError.
-
- example:
-
- - Get an exists object stream
-
- ```js
- const result = await store.getStream('ossdemo/demo.txt');
- result.stream.pipe(fs.createWriteStream('some file.txt'));
- ```
-
- ### .delete(name[, options])
-
- Delete an object from the bucket.
-
- parameters:
-
- - name {String} object name store on OSS
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
-
- Success will return the info contains response.
-
- object:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If delete object not exists, will also delete success.
-
- example:
-
- - Delete an exists object
-
- ```js
- await store.delete('ossdemo/someobject');
- ```
-
- - Delete a not exists object
-
- ```js
- await store.delete('ossdemo/some-not-exists-object');
- ```
-
- - Delete a history object or deleteMarker
-
- ```js
- const versionId = 'versionId';
- await store.delete('ossdemo/some-not-exists-object', { versionId });
- ```
-
- ### .copy(name, sourceName[, sourceBucket, options])
-
- Copy an object from `sourceName` to `name`.
-
- parameters:
-
- - name {String} object name store on OSS
- - sourceName {String} source object name
- - [sourceBucket] {String} source Bucket. if doesn't exist,`sourceBucket` is same bucket.
- - [options] {Object} optional parameters
- - [versionId] {String} the version id of history object
- - [timeout] {Number} the operation timeout
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- e.g.: `{ uid: 123, pid: 110 }`
- If the `meta` set, will override the source object meta.
- - [headers] {Object} extra headers
- - 'If-Match' do copy if source object etag equal this,
- otherwise throw PreconditionFailedError
- - 'If-None-Match' do copy if source object etag not equal this,
- otherwise throw PreconditionFailedError
- - 'If-Modified-Since' do copy if source object modified after this time,
- otherwise throw PreconditionFailedError
- - 'If-Unmodified-Since' do copy if source object modified before this time,
- otherwise throw PreconditionFailedError
- - See more: [CopyObject](https://help.aliyun.com/document_detail/31979.html?#title-tzy-vxc-ncx)
-
- Success will return the copy result in `data` property.
-
- object:
-
- - data {Object} copy result
- - lastModified {String} object last modified GMT string
- - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"`
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If source object not exists, will throw NoSuchKeyError.
-
- example:
-
- - Copy same bucket object
-
- ```js
- store.copy('newName', 'oldName').then(result => {
- console.log(result);
- });
- ```
-
- - Copy other bucket object
-
- ```js
- store.copy('logo.png', 'logo.png', 'other-bucket').then(result => {
- console.log(result);
- });
- ```
-
- - Copy historic object
-
- ```js
- const versionId = 'your verisonId';
- store.copy('logo.png', 'logo.png', 'other-bucket', { versionId }).then(result => {
- console.log(result);
- });
- ```
-
- ### .putMeta(name, meta[, options])
-
- Set an exists object meta.
-
- parameters:
-
- - name {String} object name store on OSS
- - meta {Object} user meta, will send with `x-oss-meta-` prefix string
- e.g.: `{ uid: 123, pid: 110 }`
- If `meta: null`, will clean up the exists meta
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the putMeta result in `data` property.
-
- - data {Object} copy result
- - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z`
- - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"`
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If object not exists, will throw NoSuchKeyError.
-
- example:
-
- - Update exists object meta
-
- ```js
- const result = await store.putMeta('ossdemo.txt', {
- uid: 1,
- pid: 'p123'
- });
- console.log(result);
- ```
-
- - Clean up object meta
-
- ```js
- await store.putMeta('ossdemo.txt', null);
- ```
-
- ### .deleteMulti(names[, options])
-
- Delete multi objects in one request.
-
- parameters:
-
- - names {Array<Object>} object names, max 1000 objects in once.
- - key {String} object name
- - [versionId] {String} the version id of history object or deleteMarker
- - [options] {Object} optional parameters
- - [quiet] {Boolean} quiet mode or verbose mode, default is `false`, verbose mode
- quiet mode: if all objects delete succes, return emtpy response.
- otherwise return delete error object results.
- verbose mode: return all object delete results.
- - [timeout] {Number} the operation timeout
-
- Success will return delete success objects in `deleted` property.
-
- - [deleted] {Array<Object>} deleted object or deleteMarker info list
- - [Key] {String} object name
- - [VersionId] {String} object versionId
- - [DeleteMarker] {String} generate or delete marker
- - [DeleteMarkerVersionId] {String} marker versionId
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Delete multi objects in quiet mode
-
- ```js
- const result = await store.deleteMulti(['obj1', 'obj2', 'obj3'], {
- quiet: true
- });
- ```
-
- - Delete multi objects in verbose mode
-
- ```js
- const result = await store.deleteMulti(['obj1', 'obj2', 'obj3']);
- ```
-
- - Delete multi objects in multiversion
-
- ```js
- const obj1 = {
- key: 'key1',
- versionId: 'versionId1'
- };
- const obj2 = {
- key: 'key2',
- versionId: 'versionId2'
- };
- const result = await store.deleteMulti([obj1, obj2]);
- ```
-
- ### .list(query[, options])
-
- List objects in the bucket.
-
- parameters:
-
- - [query] {Object} query parameters, default is `null`
- - [prefix] {String} search object using `prefix` key
- - [marker] {String} search start from `marker`, including `marker` key
- - [delimiter] {String} delimiter search scope
- e.g. `/` only search current dir, not including subdir
- - [max-keys] {String|Number} max objects, default is `100`, limit to `1000`
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return objects list on `objects` properties.
-
- - objects {Array<ObjectMeta>} object meta info list
- Each `ObjectMeta` will contains blow properties:
- - name {String} object name on oss
- - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z`
- - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"`
- - type {String} object type, e.g.: `Normal`
- - size {Number} object size, e.g.: `344606`
- - storageClass {String} storage class type, e.g.: `Standard`
- - owner {Object} object owner, including `id` and `displayName`
- - prefixes {Array<String>} prefix list
- - isTruncated {Boolean} truncate or not
- - nextMarker {String} next marker string
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - List top 10 objects
-
- ```js
- const result = await store.list();
- console.log(result.objects);
- ```
-
- - List `fun/` dir including subdirs objects
-
- ```js
- const result = await store.list({
- prefix: 'fun/'
- });
- console.log(result.objects);
- ```
-
- - List `fun/` dir objects, not including subdirs
-
- ```js
- const result = await store.list({
- prefix: 'fun/',
- delimiter: '/'
- });
- console.log(result.objects);
- ```
-
- ### .listV2(query[, options])
-
- List objects in the bucket.(recommended)
-
- parameters:
-
- - [query] {Object} query parameters, default is `null`
- - [prefix] {String} search object using `prefix` key
- - [continuation-token] (continuationToken) {String} search start from `continuationToken`, including `continuationToken` key
- - [delimiter] {String} delimiter search scope
- e.g. `/` only search current dir, not including subdir
- - [max-keys] {String|Number} max objects, default is `100`, limit to `1000`
- - [start-after] {String} specifies the Start-after value from which to start the list. The names of objects are returned in alphabetical order.
- - [fetch-owner] {Boolean} specifies whether to include the owner information in the response.
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return objects list on `objects` properties.
-
- - objects {Array<ObjectMeta>} object meta info list
- Each `ObjectMeta` will contains blow properties:
- - name {String} object name on oss
- - url {String} resource url
- - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z`
- - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"`
- - type {String} object type, e.g.: `Normal`
- - size {Number} object size, e.g.: `344606`
- - storageClass {String} storage class type, e.g.: `Standard`
- - owner {Object|null} object owner, including `id` and `displayName`
- - prefixes {Array<String>} prefix list
- - isTruncated {Boolean} truncate or not
- - nextContinuationToken {String} next continuation-token string
- - keyCount {Number} The number of keys returned for this request. If Delimiter is specified, KeyCount is the sum of the elements in Key and CommonPrefixes.
- - res {Object} response info, including
-
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- - List top 10 objects
-
- ```js
- const result = await store.listV2({
- 'max-keys': 10
- });
- console.log(result.objects);
- ```
-
- - List `fun/` dir including subdirs objects
-
- ```js
- const result = await store.listV2({
- prefix: 'fun/'
- });
- console.log(result.objects);
- ```
-
- - List `fun/` dir objects, not including subdirs
-
- ```js
- const result = await store.listV2({
- prefix: 'fun/',
- delimiter: '/'
- });
- console.log(result.objects);
- ```
-
- - List `a/` dir objects, after `a/b` and not include `a/b`
-
- ```js
- const result = await store.listV2({
- delimiter: '/',
- prefix: 'a/',
- 'start-after': 'a/b'
- });
- console.log(result.objects);
- ```
-
- ### .getBucketVersions(query[, options])
-
- List the version information of all objects in the bucket, including the delete marker (Delete Marker).
-
- parameters:
-
- - [query] {Object} query parameters, default is `null`
- - [prefix] {String} search object using `prefix` key
- - [versionIdMarker] {String} set the result to return from the version ID marker of the key marker object and sort by the versions
- - [keyMarker] {String} search start from `keyMarker`, including `keyMarker` key
- - [encodingType] {String} specifies that the returned content is encoded, and specifies the type of encoding
- - [delimiter] {String} delimiter search scope
- e.g. `/` only search current dir, not including subdir
- - [maxKeys] {String|Number} max objects, default is `100`, limit to `1000`
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return objects list on `objects` properties.
-
- - objects {Array<ObjectMeta>} object meta info list
- Each `ObjectMeta` will contains blow properties:
- - name {String} object name on oss
- - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z`
- - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"`
- - type {String} object type, e.g.: `Normal`
- - size {Number} object size, e.g.: `344606`
- - isLatest {Boolean}
- - versionId {String} object versionId
- - storageClass {String} storage class type, e.g.: `Standard`
- - owner {Object} object owner, including `id` and `displayName`
- - deleteMarker {Array<ObjectDeleteMarker>} object delete marker info list
- Each `ObjectDeleteMarker`
- - name {String} object name on oss
- - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z`
- - versionId {String} object versionId
- - isTruncated {Boolean} truncate or not
- - nextKeyMarker (nextMarker) {String} next marker string
- - nextVersionIdMarker (NextVersionIdMarker) {String} next version ID marker string
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - View all versions of objects and deleteMarker of bucket
-
- ```js
- const result = await store.getBucketVersions();
- console.log(result.objects);
- console.log(result.deleteMarker);
- ```
-
- - List from key-marker
-
- ```js
- const result = await store.getBucketVersions({
- keyMarker: 'keyMarker'
- });
- console.log(result.objects);
- ```
-
- - List from the version-id-marker of key-marker
-
- ```js
- const result = await store.getBucketVersions({
- versionIdMarker: 'versionIdMarker',
- keyMarker: 'keyMarker'
- });
- console.log(result.objects);
- console.log(result.deleteMarker);
- ```
-
- ### .signatureUrl(name[, options, strictObjectNameValidation])
-
- Create a signature url for download or upload object. When you put object with signatureUrl ,you need to pass `Content-Type`.Please look at the example.
-
- parameters:
-
- - name {String} object name store on OSS
- - [options] {Object} optional parameters
- - [expires] {Number} after expires seconds, the url will become invalid, default is `1800`
- - [method] {String} the HTTP method, default is 'GET'
- - [Content-Type] {String} set the request content type
- - [process] {String} image process params, will send with `x-oss-process`
- e.g.: `{process: 'image/resize,w_200'}`
- - [trafficLimit] {Number} traffic limit, range: `819200`~`838860800`.
- - [subResource] {Object} additional signature parameters in url.
- - [response] {Object} set the response headers for download
- - [content-type] {String} set the response content type
- - [content-disposition] {String} set the response content disposition
- - [cache-control] {String} set the response cache control
- - See more: <https://help.aliyun.com/document_detail/31980.html>
- - [callback] {Object} set the callback for the operation
- - url {String} set the url for callback
- - [host] {String} set the host for callback
- - body {String} set the body for callback
- - [contentType] {String} set the type for body
- - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client
- - [customValue] {Object} set the custom value for callback,eg. {var1: value1,var2:value2}
- - [strictObjectNameValidation] {boolean} the flag of verifying object name strictly, default is true
-
- Success will return signature url.
-
- example:
-
- - Get signature url for object
-
- ```js
- const url = store.signatureUrl('ossdemo.txt');
- console.log(url);
- // --------------------------------------------------
- const url = store.signatureUrl('ossdemo.txt', {
- expires: 3600,
- method: 'PUT'
- });
- console.log(url);
-
- // put object with signatureUrl
- // -------------------------------------------------
-
- const url = store.signatureUrl('ossdemo.txt', {
- expires: 3600,
- method: 'PUT',
- 'Content-Type': 'text/plain; charset=UTF-8'
- });
- console.log(url);
-
- // --------------------------------------------------
- const url = store.signatureUrl(
- 'ossdemo.txt',
- {
- expires: 3600,
- response: {
- 'content-type': 'text/custom',
- 'content-disposition': 'attachment'
- }
- },
- false
- );
- console.log(url);
-
- // put operation
- ```
-
- - Get a signature url for a processed image
-
- ```js
- const url = store.signatureUrl('ossdemo.png', {
- process: 'image/resize,w_200'
- });
- console.log(url);
- // --------------------------------------------------
- const url = store.signatureUrl('ossdemo.png', {
- expires: 3600,
- process: 'image/resize,w_200'
- });
- console.log(url);
- ```
-
- ### .asyncSignatureUrl(name[, options, strictObjectNameValidation])
-
- Basically the same as signatureUrl, if refreshSTSToken is configured asyncSignatureUrl will refresh stsToken
-
- parameters:
-
- - name {String} object name store on OSS
- - [options] {Object} optional parameters
- - [expires] {Number} after expires seconds, the url will become invalid, default is `1800`
- - [method] {String} the HTTP method, default is 'GET'
- - [Content-Type] {String} set the request content type
- - [process] {String} image process params, will send with `x-oss-process`
- e.g.: `{process: 'image/resize,w_200'}`
- - [trafficLimit] {Number} traffic limit, range: `819200`~`838860800`.
- - [subResource] {Object} additional signature parameters in url.
- - [response] {Object} set the response headers for download
- - [content-type] {String} set the response content type
- - [content-disposition] {String} set the response content disposition
- - [cache-control] {String} set the response cache control
- - See more: <https://help.aliyun.com/document_detail/31980.html>
- - [callback] {Object} set the callback for the operation
- - url {String} set the url for callback
- - [host] {String} set the host for callback
- - body {String} set the body for callback
- - [contentType] {String} set the type for body
- - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client
- - [customValue] {Object} set the custom value for callback,eg. {var1: value1,var2:value2}
- - [strictObjectNameValidation] {boolean} the flag of verifying object name strictly, default is true
-
- Success will return signature url.
-
- example:
-
- - Get signature url for object
-
- ```js
- const url = await store.asyncSignatureUrl('ossdemo.txt');
- console.log(url);
- // --------------------------------------------------
- const url = await store.asyncSignatureUrl('ossdemo.txt', {
- expires: 3600,
- method: 'PUT'
- });
- console.log(url);
- // put object with signatureUrl
- // -------------------------------------------------
- const url = await store.asyncSignatureUrl('ossdemo.txt', {
- expires: 3600,
- method: 'PUT',
- 'Content-Type': 'text/plain; charset=UTF-8'
- });
- console.log(url);
- // --------------------------------------------------
- const url = await store.asyncSignatureUrl(
- 'ossdemo.txt',
- {
- expires: 3600,
- response: {
- 'content-type': 'text/custom',
- 'content-disposition': 'attachment'
- }
- },
- false
- );
- console.log(url);
- // put operation
- ```
-
- - Get a signature url for a processed image
-
- ```js
- const url = await store.asyncSignatureUrl('ossdemo.png', {
- process: 'image/resize,w_200'
- });
- console.log(url);
- // --------------------------------------------------
- const url = await store.asyncSignatureUrl('ossdemo.png', {
- expires: 3600,
- process: 'image/resize,w_200'
- });
- console.log(url);
- ```
-
- ### .signatureUrlV4(method, expires[, request, objectName, additionalHeaders])
-
- Generate a signed URL for V4 of an OSS resource and share the URL to allow authorized third-party users to access the resource.
-
- parameters:
-
- - method {string} the HTTP method
- - expires {number} the signed URL will expire after the set number of seconds
- - [request] {Object} optional request parameters
- - [headers] {Object} headers of http requests, please make sure these request headers are set during the actual request
- - [queries] {Object} queries of the signed URL, please ensure that if the query only has key, the value is set to null
- - [objectName] {string} object name
- - [additionalHeaders] {string[]} the keys of the request headers that need to be calculated into the V4 signature, please ensure that these additional headers are included in the request headers
-
- Success will return signature url.
-
- example:
-
- ```js
- // GetObject
- const getObjectUrl = await store.signatureUrlV4('GET', 60, undefined, 'your obejct name');
- console.log(getObjectUrl);
- // --------------------------------------------------
- const getObjectUrl = await store.signatureUrlV4(
- 'GET',
- 60,
- {
- headers: {
- 'Cache-Control': 'no-cache'
- },
- queries: {
- versionId: 'version ID of your object'
- }
- },
- 'your obejct name',
- ['Cache-Control']
- );
- console.log(getObjectUrl);
-
- // -------------------------------------------------
- // PutObject
- const putObejctUrl = await store.signatureUrlV4('PUT', 60, undefined, 'your obejct name');
- console.log(putObejctUrl);
- // --------------------------------------------------
- const putObejctUrl = await store.signatureUrlV4(
- 'PUT',
- 60,
- {
- headers: {
- 'Content-Type': 'text/plain',
- 'Content-MD5': 'xxx',
- 'Content-Length': 1
- }
- },
- 'your obejct name',
- ['Content-Length']
- );
- console.log(putObejctUrl);
- ```
-
- ### .putACL(name, acl[, options])
-
- Set object's ACL.
-
- parameters:
-
- - name {String} object name
- - acl {String} acl (private/public-read/public-read-write)
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Set an object's ACL
-
- ```js
- await store.putACL('ossdemo.txt', 'public-read');
- ```
-
- - Set an history object's ACL
-
- ```js
- const versionId = 'object versionId';
- await store.putACL('ossdemo.txt', 'public-read', {
- versionId
- });
- ```
-
- ### .getACL(name[, options])
-
- Get object's ACL.
-
- parameters:
-
- - name {String} object name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
-
- Success will return:
-
- - acl {String} acl settiongs string
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Get an object's ACL
-
- ```js
- const result = await store.getACL('ossdemo.txt');
- console.log(result.acl);
- ```
-
- - Get an history object's ACL
-
- ```js
- const versionId = 'object versionId';
- const result = await store.getACL('ossdemo.txt', { versionId });
- console.log(result.acl);
- ```
-
- ### .restore(name[, options])
-
- Restore Object.
-
- parameters:
-
- - name {String} object name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
- - [type] {String} the default type is Archive
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- - Restore an object with Archive type
-
- ```js
- const result = await store.restore('ossdemo.txt');
- console.log(result.status);
- ```
-
- - Restore an object with ColdArchive type
-
- ```js
- const result = await store.restore('ossdemo.txt', { type: 'ColdArchive' });
- console.log(result.status);
- ```
-
- - Days for unfreezing Specifies the days for unfreezing
-
- ```js
- const result = await store.restore('ossdemo.txt', { type: 'ColdArchive', Days: 2 });
- console.log(result.status);
- ```
-
- - Restore an history object
-
- ```js
- const versionId = 'object versionId';
- const result = await store.restore('ossdemo.txt', { versionId });
- console.log(result.status);
- ```
-
- ### .putSymlink(name, targetName[, options])
-
- PutSymlink
-
- parameters:
-
- - name {String} object name
- - targetName {String} target object name
- - [options] {Object} optional parameters
-
- - [storageClass] {String} the storage type include (Standard,IA,Archive)
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- - [headers] {Object} extra headers, detail see [PutSymlink](https://help.aliyun.com/document_detail/45126.html#title-x71-l2b-7i8)
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- ```js
- const options = {
- storageClass: 'IA',
- meta: {
- uid: '1',
- slus: 'test.html'
- }
- };
- const result = await store.putSymlink('ossdemo.txt', 'targetName', options);
- console.log(result.res);
- ```
-
- putSymlink multiversion
-
- ```js
- const options = {
- storageClass: 'IA',
- meta: {
- uid: '1',
- slus: 'test.html'
- }
- };
- const result = await store.putSymlink('ossdemo.txt', 'targetName', options);
- console.log(result.res.headers['x-oss-version-id']);
- ```
-
- ### .getSymlink(name[, options])
-
- GetSymlink
-
- parameters:
-
- - name {String} object name
- - [options] {Object} optional parameters
- - [versionId] {String} the version id of history object
-
- Success will return
-
- - targetName {String} target object name
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- example:
-
- ```js
- const result = await store.getSymlink('ossdemo.txt');
- console.log(result.targetName);
- ```
-
- for history object
-
- ```js
- const versionId = 'object versionId';
- const result = await store.getSymlink('ossdemo.txt', { versionId });
- console.log(result.targetName);
- ```
-
- ### .initMultipartUpload(name[, options])
-
- Before transmitting data in the Multipart Upload mode,
- you must call the Initiate Multipart Upload interface to notify the OSS to initiate a Multipart Upload event.
- The Initiate Multipart Upload interface returns a globally unique Upload ID created by the OSS server to identify this Multipart Upload event.
-
- parameters:
-
- - name {String} object name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [mime] Mime file type e.g.: application/octet-stream
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- - [headers] {Object} extra headers
- - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache`
- - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename`
- - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip`
- - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT`
- - [x-oss-server-side-encryption]
- Specify the server-side encryption algorithm used to upload each part of this object,Type: string, Valid value: AES256 `x-oss-server-side-encryption: AES256`<br>
- if use in browser you should be set cors expose header x-oss-server-side-encryption
- - See more: [InitiateMultipartUpload](https://help.aliyun.com/document_detail/31992.html?#title-wh0-a2h-rur)
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - [x-oss-server-side-encryption] if set request header x-oss-server-side-encryption, will return
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - bucket {String} bucket name
- - name {String} object name store on OSS
- - uploadId {String} upload id, use for uploadPart, completeMultipart
-
- example:
-
- ```js
- const result = await store.initMultipartUpload('object');
- console.log(result);
- ```
-
- ### .uploadPart(name, uploadId, partNo, file, start, end[, options])
-
- After initiating a Multipart Upload event, you can upload data in parts based on the specified object name and Upload ID.
-
- parameters:
-
- - name {String} object name
- - uploadId {String} get by initMultipartUpload api
- - partNo {Number} range is 1-10000, If this range is exceeded, OSS returns the InvalidArgument's error code.
- - file {File|String} is File or FileName, the whole file<br>
- Multipart Upload requires that the size of any Part other than the last Part is greater than 100KB. <br>
- In Node you can use File or FileName, but in browser you only can use File.
- - start {Number} part start bytes e.g: 102400
- - end {Number} part end bytes e.g: 204800
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - name {String} object name store on OSS
- - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE"
-
- example:
-
- ```js
- const name = 'object';
- const result = await store.initMultipartUpload(name);
- const uploadId = result.uploadId;
- const file; //the data you want to upload, is a File or FileName(only in node)
- //if file part is 10
- const partSize = 100 * 1024;
- const fileSize = 10 * partSize;//you need to calculate
- const dones = [];
- for (let i = 1; i <= 10; i++) {
- const start = partSize * (i -1);
- const end = Math.min(start + partSize, fileSize);
- const part = await store.uploadPart(name, uploadId, i, file, start, end);
- dones.push({
- number: i,
- etag: part.etag
- });
- console.log(part);
- }
-
- //end need to call completeMultipartUpload api
- ```
-
- ### .uploadPartCopy(name, uploadId, partNo, range, sourceData[, options])
-
- Using Upload Part Copy, you can copy data from an existing object and upload a part of the data.
- When copying a file larger than 1 GB, you must use the Upload Part Copy method. If you want to copy a file smaller than 1 GB, see Copy Object.
-
- parameters:
-
- - name {String} object name
- - uploadId {String} get by initMultipartUpload api
- - partNo {Number} range is 1-10000, If this range is exceeded, OSS returns the InvalidArgument's error code.
- - range {String} Multipart Upload requires that the size of any Part other than the last Part is greater than 100KB, range value like `0-102400`
- - sourceData {Object}
- - sourceKey {String} the source object name
- - sourceBucketName {String} the source bucket name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [versionId] {String} the version id of history object
- - [headers] {Object} The following request header is used for the source objects specified by x-oss-copy-source.
- - [x-oss-copy-source-if-match] default none<br>
- If the ETAG value of the source object is equal to the ETAG value provided by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message.
- - [x-oss-copy-source-if-none-match] default none<br>
- If the source object has not been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message.
- - [x-oss-copy-source-if-unmodified-since] default none<br>
- If the time specified by the received parameter is the same as or later than the modification time of the file, the system transfers the file normally, and returns 200 OK; otherwise, the system returns 412 Precondition Failed.
- - [x-oss-copy-source-if-modified-since] default none<br>
- If the source object has been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message.
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - name {String} object name store on OSS
- - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE"
-
- example:
-
- ```js
- const name = 'object';
- const result = await store.initMultipartUpload(name);
-
- const partSize = 100 * 1024; //100kb
- //if file part is 10
- for (let i = 1; i <= 10; i++) {
- const start = partSize * (i - 1);
- const end = Math.min(start + partSize, fileSize);
- const range = start + '-' + (end - 1);
- const part = await store.uploadPartCopy(name, result.uploadId, i, range, {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- });
- console.log(part);
- }
-
- //end need complete api
- ```
-
- - use history object to uploadPartCopy
-
- ```js
- const versionId = 'object versionId';
- const name = 'object';
- const result = await store.initMultipartUpload(name);
- const partSize = 100 * 1024; //100kb
- //if file part is 10
- for (let i = 1; i <= 10; i++) {
- const start = partSize * (i - 1);
- const end = Math.min(start + partSize, fileSize);
- const range = start + '-' + (end - 1);
- const part = await store.uploadPartCopy(
- name,
- result.uploadId,
- i,
- range,
- {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- },
- {
- versionId
- }
- );
- console.log(part);
- }
-
- //end need complete api
- ```
-
- ### .completeMultipartUpload(name, uploadId, parts[, options])
-
- After uploading all data parts, you must call the Complete Multipart Upload API to complete Multipart Upload for the entire file.
-
- parameters:
-
- - name {String} object name
- - uploadId {String} get by initMultipartUpload api
- - parts {Array} more part {Object} from uploadPartCopy, , each in the structure:
- - number {Number} partNo
- - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE"
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br>
- - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL.
- - [host] {String} The host header value for initiating callback requests.
- - body {String} The value of the request body when a callback is initiated, for example, key=${key}&etag=${etag}&my_var=${x:my_var}.
- - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value.
- - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client.
- - [customValue] {Object} Custom parameters are a map of key-values<br>
- e.g.:
- ```js
- var customValue = { var1: 'value1', var2: 'value2' };
- ```
- - [headers] {Object} extra headers, detail see [CompleteMultipartUpload](https://help.aliyun.com/document_detail/31995.html?#title-nan-5y3-rjd)
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - bucket {String} bucket name
- - name {String} object name store on OSS
- - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE"
- - data {Object} callback server response data , sdk use JSON.parse() return
-
- example:
-
- ```js
-
- //init multipart
- const name = 'object';
- const result = await store.initMultipartUpload(name);
-
- //upload part
- const file; //the data you want to upload, this example size is 10 * 100 * 1024
- const fileSize;//you need to calculate
- const partSize = 100 * 1024;//100kb
- const done = [];
- //if file part is 10
- for (let i = 1; i <= 10; i++) {
- const start = partSize * (i -1);
- const end = Math.min(start + partSize, fileSize);
- const data = file.slice(start, end);
- const part = store.uploadPart(name, result.uploadId, i, data, 0, data.length);
- console.log(part);
- done.push({
- number: i,
- etag: part.res.headers.etag
- });
- }
-
- //complete
- const completeData = await store.completeMultipartUpload(name, result.uploadId, done);
- console.log(completeData);
- ```
-
- ### .multipartUpload(name, file[, options])
-
- Upload file with [OSS multipart][oss-multipart].<br>
- this function contains initMultipartUpload, uploadPart, completeMultipartUpload.
- When you use multipartUpload api,if you encounter problems with ConnectionTimeoutError, you should handle ConnectionTimeoutError in your business code. How to resolve ConnectionTimeoutError, you can decrease `partSize` size 、 Increase `timeout` 、Retry request ,
- or give tips in your business code;
-
- parameters:
-
- - name {String} object name
- - file {String|File(only support Browser)|Blob(only support Browser)|Buffer} file path or HTML5 Web File or web Blob or content buffer
- - [options] {Object} optional args
- - [parallel] {Number} the number of parts to be uploaded in parallel
- - [partSize] {Number} the suggested size for each part, default `1024 * 1024`(1MB), minimum `100 * 1024`(100KB)
- - [progress] {Function} function | async | Promise, the progress callback called after each
- successful upload of one part, it will be given three parameters:
- (percentage {Number}, checkpoint {Object}, res {Object})
- - [checkpoint] {Object} the checkpoint to resume upload, if this is
- provided, it will continue the upload from where interrupted,
- otherwise a new multipart upload will be created.
- - file {File} The file object selected by the user, if the browser is restarted, it needs the user to manually trigger the settings
- - name {String} object key
- - fileSize {Number} file size
- - partSize {Number} part size
- - uploadId {String} upload id
- - doneParts {Array} An array of pieces that have been completed, including the object structure as follows
- - number {Number} part number
- - etag {String} part etag
- - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string
- - [mime] {String} custom mime , will send with `Content-Type` entity header
- - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br>
- - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL.
- - [host] {String} The host header value for initiating callback requests.
- - body {String} The value of the request body when a callback is initiated, for example, key=${key}&etag=${etag}&my_var=${x:my_var}.
- - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value.
- - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client.
- - [customValue] {Object} Custom parameters are a map of key-values<br>
- e.g.:
- ```js
- var customValue = { var1: 'value1', var2: 'value2' };
- ```
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache`
- - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename`
- - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip`
- - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT`
- - **NOTE**: Some headers are [disabled in browser][disabled-browser-headers]
- - [timeout] {Number} Milliseconds before a request is considered to be timed out
- - [disabledMD5] {Boolean} default true, it just work in Browser. if false,it means that MD5 is automatically calculated for uploaded files. **_NOTE:_** Synchronous computing tasks will block the main process
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - bucket {String} bucket name
- - name name {String} object name store on OSS
- - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE"
- - data {Object} callback server response data, sdk use JSON.parse() return
-
- example:
-
- - Upload using multipart
-
- ```js
- const result = await store.multipartUpload('object', '/tmp/file');
- let savedCpt;
- console.log(result);
-
- const result = await store.multipartUpload('object', '/tmp/file', {
- parallel: 4,
- partSize: 1024 * 1024,
- progress: function (p, cpt, res) {
- console.log(p);
- savedCpt = cpt;
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- });
-
- const result = await store.multipartUpload('object', '/tmp/file', {
- checkpoint: savedCpt,
- progress: function (p, cpt, res) {
- //progress is generator
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- });
- ```
-
- - multipartUpload progress example
-
- ```js
- //async function
- async function asyncProgress(p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
-
- const result1 = await store.multipartUpload('object', '/tmp/file', {
- progress: asyncProgress
- });
-
- //function
- function progress(p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
-
- const result2 = await store.multipartUpload('object', '/tmp/file', {
- progress: progress
- });
- ```
-
- - multipartUpload with abort
-
- > tips: abort multipartUpload support on node and browser
-
- ```js
- //start upload
- let abortCheckpoint;
- store.multipartUpload('object', '/tmp/file', {
- progress: function (p, cpt, res) {
- abortCheckpoint = cpt;
- }
- }).then(res => {
- // do something
- }).catch(err => {
- //if abort will catch abort event
- if (err.name === 'abort') {
- // handle abort
- console.log('error: ', err.message)
- }
- });
-
- // abort
- store.abortMultipartUpload(abortCheckpoint.name, abortCheckpoint.uploadId);
- ```
-
- - multipartUpload with cancel
-
- > tips: cancel multipartUpload support on node and browser
-
- ```js
- //start upload
- try {
- const result = await store.multipartUpload('object', '/tmp/file', {
- checkpoint: savedCpt,
- progress: function (p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- });
- } catch (err) {
- //if cancel will catch cancel event
- if (store.isCancel()) {
- //do something
- }
- }
-
- //the other event to cancel, for example: click event
- //to cancel upload must use the same client instance
- store.cancel();
- ```
-
- - multipartUpload with capture `ConnectionTimeoutError` error
-
- ```js
- //start upload
- try {
- const result = await store.multipartUpload('object', '/tmp/file', {
- checkpoint: savedCpt,
- progress: function (p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- });
- } catch (err) {
- if (err.code === 'ConnectionTimeoutError') {
- console.log('Woops,Woops ,timeout error!!!');
- // do ConnectionTimeoutError operation
- }
- }
- ```
-
- ### .multipartUploadCopy(name, sourceData[, options])
-
- Copy file with [OSS multipart][oss-multipart]. <br>
- this function contains head, initMultipartUpload, uploadPartCopy, completeMultipartUpload.<br>
- When copying a file larger than 1 GB, you should use the Upload Part Copy method. If you want to copy a file smaller than 1 GB, see Copy Object.
-
- parameters:
-
- - name {String} object name
- - file {String|File} file path or HTML5 Web File
- - [options] {Object} optional args
- - [timeout] {Number} Milliseconds before a request is considered to be timed out
- - [parallel] {Number} the number of parts to be uploaded in parallel
- - [partSize] {Number} the suggested size for each part, defalut `1024 * 1024`(1MB), minimum `100 * 1024`(100KB)
- - [versionId] {String} the version id of history object
- - [progress] {Function} function | async | Promise, the progress callback called after each
- successful upload of one part, it will be given three parameters:
- (percentage {Number}, checkpoint {Object}, res {Object})
- - [checkpoint] {Object} the checkpoint to resume upload, if this is
- provided, it will continue the upload from where interrupted,
- otherwise a new multipart upload will be created.
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache`
- - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename`
- - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip`
- - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT`
- - **NOTE**: Some headers are [disabled in browser][disabled-browser-headers]
- - [copyheaders] {Object} only uploadPartCopy api used, detail [see](https://www.alibabacloud.com/help/doc-detail/31994.htm)
- - [x-oss-copy-source-if-match] only uploadPartCopy api used, default none<br>
- If the ETAG value of the source object is equal to the ETAG value provided by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message.
- - [x-oss-copy-source-if-none-match] only uploadPartCopy api used, default none<br>
- If the source object has not been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message.
- - [x-oss-copy-source-if-unmodified-since] only uploadPartCopy api used, default none<br>
- If the time specified by the received parameter is the same as or later than the modification time of the file, the system transfers the file normally, and returns 200 OK; otherwise, the system returns 412 Precondition Failed.
- - [x-oss-copy-source-if-modified-since] only uploadPartCopy api used, default none<br>
- If the source object has been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message.
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - bucket {String} bucket name
- - name name {String} object name store on OSS
- - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE"
-
- example:
-
- - Copy using multipart
-
- ```js
- const result = await store.multipartUploadCopy('object', {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- });
- let savedCpt;
- console.log(result);
-
- const result = await store.multipartUploadCopy(
- 'object',
- {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- },
- {
- parallel: 4,
- partSize: 1024 * 1024,
- progress: function (p, cpt, res) {
- console.log(p);
- savedCpt = cpt;
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- }
- );
-
- console.log(result);
-
- const result = await store.multipartUploadCopy(
- 'object',
- {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- },
- {
- checkpoint: savedCpt,
- progress: function (p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- }
- );
-
- console.log(result);
- ```
-
- - multipartUploadCopy with abort
-
- ```js
- // start upload
- let abortCheckpoint;
- store.multipartUploadCopy('object', {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- }, {
- progress: function (p, cpt, res) {
- abortCheckpoint = cpt;
- }
- }).then(res => {
- // do something
- }).catch(err => {
- //if abort will catch abort event
- if (err.name === 'abort') {
- // handle abort
- console.log('error: ', err.message)
- }
- });
-
- // the other event to abort, for example: click event
- // to abort upload must use the same client instance
- store.abortMultipartUpload(abortCheckpoint.name, abortCheckpoint.uploadId);
- ```
-
- - multipartUploadCopy with cancel
-
- ```js
- //start upload
- try {
- const result = await store.multipartUploadCopy(
- 'object',
- {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- },
- {
- checkpoint: savedCpt,
- progress: function (p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- }
- }
- );
- } catch (err) {
- //if cancel will catch cancel event
- if (store.isCancel()) {
- //do something
- }
- }
-
- //the other event to cancel, for example: click event
- //to cancel upload must use the same client instance
- store.cancel();
- ```
-
- - multipartUploadCopy with versionId
-
- ```js
- const versionId = 'object versionId';
- //start upload
- const result = await store.multipartUploadCopy(
- 'object',
- {
- sourceKey: 'sourceKey',
- sourceBucketName: 'sourceBucketName'
- },
- {
- checkpoint: savedCpt,
- progress: function (p, cpt, res) {
- console.log(p);
- console.log(cpt);
- console.log(res.headers['x-oss-request-id']);
- },
- versionId
- }
- );
- ```
-
- ### .listParts(name, uploadId[, query, options])
-
- The ListParts command can be used to list all successfully uploaded parts mapped to a specific upload ID, i.e.: those not completed and not
- aborted.
-
- parameters:
-
- - name {String} object key
- - uploadId {String} upload ID from initMultipartUpload api
- - [query] {Object} query parameters
- - [max-parts] {Number} The maximum part number in the response of the OSS. default value: 1000.
- - [part-number-marker] {Number} Starting position of a specific list. A part is listed only when the part number is greater than the value of this parameter.
- - [encoding-type] {String} Specify the encoding of the returned content and the encoding type. Optional value: url
- - [options] {Object} optional args
- - [timeout] {Number} the operation timeout
-
- Success will return:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - uploadId {String} upload ID
- - bucket {String} Specify the bucket name.
- - name {String} object name
- - PartNumberMarker {Number} Starting position of the part numbers in the listing result.
- - nextPartNumberMarker {Number} If not all results are returned this time, the response request includes the NextPartNumberMarker element to indicate the value of PartNumberMarker in the next request.
- - maxParts {Number} upload ID
- - isTruncated {Boolean} Whether the returned result list for List Parts is truncated. The “true” indicates that not all results are returned; “false” indicates that all results are returned.
- - parts {Array} The container that saves part information, each in the structure:
- - PartNumber {Number} Part number.
- - LastModified {Date} Time when a part is uploaded.
- - ETag {String} ETag value in the content of the uploaded part.
- - Size {Number} Size of the uploaded part.
-
- example:
-
- - List uploaded part
-
- ```js
- const result = await store.listParts('objcet', 'uploadId', {
- 'max-parts': 1000
- });
- console.log(result);
- ```
-
- ### .listUploads(query[, options])
-
- List on-going multipart uploads, i.e.: those not completed and not
- aborted.
-
- parameters:
-
- - query {Object} query parameters
- - [prefix] {String} the object key prefix
- - [max-uploads] {Number} the max uploads to return
- - [key-marker] {String} the object key marker, if `upload-id-marker`
- is not provided, return uploads with `key > marker`, otherwise
- return uploads with `key >= marker && uploadId > id-marker`
- - [upload-id-marker] {String} the upload id marker, must be used
- **WITH** `key-marker`
- - [options] {Object} optional args
- - [timeout] {Number} the operation timeout
-
- example:
-
- - List on-going multipart uploads
-
- ```js
- const result = await store.listUploads({
- 'max-uploads': 100,
- 'key-marker': 'my-object',
- 'upload-id-marker': 'upload-id'
- });
- console.log(result);
- ```
-
- ### .abortMultipartUpload(name, uploadId[, options])
-
- Abort a multipart upload for object.
-
- parameters:
-
- - name {String} the object name
- - uploadId {String} the upload id
- - [options] {Object} optional args
- - [timeout] {Number} the operation timeout
-
- example:
-
- - Abort a multipart upload
-
- ```js
- const result = await store.abortMultipartUpload('object', 'upload-id');
- console.log(result);
- ```
-
- ### .calculatePostSignature(policy)
-
- get postObject params
-
- parameters:
-
- - policy {JSON or Object} policy must contain expiration and conditions.
-
- Success will return postObject Api params.
-
- Object:
-
- - OSSAccessKeyId {String}
- - Signature {String}
- - policy {Object} response info
-
- ### .getObjectTagging(name[, options])
-
- Obtains the tags of an object.
-
- parameters:
-
- - name {String} the object name
- - [options] {Object} optional args
- - [versionId] {String} the version id of history object
-
- Success will return the channel information.
-
- object:
-
- - tag {Object} the tag of object
- - res {Object} response info
-
- ### .putObjectTagging(name, tag[, options])
-
- Configures or updates the tags of an object.
-
- parameters:
-
- - name {String} the object name
- - tag {Object} tag, eg. `{var1: value1,var2:value2}`
- - [options] {Object} optional args
- - [versionId] {String} the version id of history object
-
- Success will return the channel information.
-
- object:
-
- - status {Number} response status
- - res {Object} response info
-
- ### .deleteObjectTagging(name[, options])
-
- Deletes the tag of a specified object.
-
- parameters:
-
- - name {String} the object name
- - tag {Object} tag, eg. `{var1: value1,var2:value2}`
- - [options] {Object} optional args
- - [versionId] {String} the version id of history object
-
- Success will return the channel information.
-
- object:
-
- - status {Number} response status
- - res {Object} response info
-
- ### .processObjectSave(sourceObject, targetObject, process[, targetBucket])
-
- Persistency indicates that images are asynchronously stored in the specified Bucket
-
- parameters:
-
- - sourceObject {String} source object name
- - targetObject {String} target object name
- - process {String} process string
- - [targetBucket] {String} target bucket
-
- Success will return the channel information.
-
- object:
-
- - status {Number} response status
- - res {Object} response info
-
- ```js
- const sourceObject = 'a.png';
- const targetObject = 'b.png';
- const process = 'image/watermark,text_aGVsbG8g5Zu+54mH5pyN5Yqh77yB,color_ff6a00';
-
- await this.store.processObjectSave(sourceObject, targetObject, process);
- ```
-
- ## RTMP Operations
-
- All operations function is [async], except `getRtmpUrl`.
-
- async function format: `async functionName(...)`.
-
- ### .putChannel(id, conf[, options])
-
- Create a live channel.
-
- parameters:
-
- - id {String} the channel id
- - conf {Object} the channel config
- - [Description] {String} the channel description
- - [Status] {String} the channel status: 'enabled' or 'disabled'
- - [Target] {Object}
- - [Type] {String} the data type for the channel, only 'HLS' is supported now
- - [FragDuration] {Number} duration of a 'ts' segment
- - [FragCount] {Number} the number of 'ts' segments in a 'm3u8'
- - [PlaylistName] {String} the 'm3u8' name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the channel information.
-
- object:
-
- - publishUrls {Array} the publish urls
- - playUrls {Array} the play urls
- - res {Object} response info
-
- example:
-
- - Create a live channel
-
- ```js
- const cid = 'my-channel';
- const conf = {
- Description: 'this is channel 1',
- Status: 'enabled',
- Target: {
- Type: 'HLS',
- FragDuration: '10',
- FragCount: '5',
- PlaylistName: 'playlist.m3u8'
- }
- };
-
- const r = await this.store.putChannel(cid, conf);
- console.log(r);
- ```
-
- ### .getChannel(id[, options])
-
- Get live channel info.
-
- parameters:
-
- - id {String} the channel id
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the channel information.
-
- object:
-
- - data {Object} channel info, same as conf in [.putChannel](#putchannelid-conf-options)
- - res {Object} response info
-
- example:
-
- - Get live channel info
-
- ```js
- const cid = 'my-channel';
-
- const r = await this.store.getChannel(cid);
- console.log(r);
- ```
-
- ### .deleteChannel(id[, options])
-
- Delete a live channel.
-
- parameters:
-
- - id {String} the channel id
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the response infomation.
-
- object:
-
- - res {Object} response info
-
- example:
-
- - Delete a live channel
-
- ```js
- const cid = 'my-channel';
-
- const r = await this.store.deleteChannel(cid);
- console.log(r);
- ```
-
- ### .putChannelStatus(id, status[, options])
-
- Change the live channel status.
-
- parameters:
-
- - id {String} the channel id
- - status {String} the status: 'enabled' or 'disabled'
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the response information.
-
- object:
-
- - res {Object} response info
-
- example:
-
- - Disable a live channel
-
- ```js
- const cid = 'my-channel';
-
- const r = await this.store.putChannelStatus(cid, 'disabled');
- console.log(r);
- ```
-
- ### .getChannelStatus(id[, options])
-
- Get the live channel status.
-
- parameters:
-
- - id {String} the channel id
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the channel status information.
-
- object:
-
- - data {Object}
- - Status {String} the channel status: 'Live' or 'Idle'
- - [ConnectedTime] {String} the connected time of rtmp pushing
- - [RemoteAddr] {String} the remote addr of rtmp pushing
- - [Video] {Object} the video parameters (Width/Height/FrameRate/Bandwidth/Codec)
- - [Audio] {Object} the audio parameters (Bandwidth/SampleRate/Codec)
- - res {Object} response info
-
- example:
-
- - Get a live channel status
-
- ```js
- const cid = 'my-channel';
-
- const r = await this.store.getChannelStatus(cid);
- console.log(r);
-
- // { Status: 'Live',
- // ConnectedTime: '2016-04-12T11:51:03.000Z',
- // RemoteAddr: '42.120.74.98:53931',
- // Video:
- // { Width: '672',
- // Height: '378',
- // FrameRate: '29',
- // Bandwidth: '60951',
- // Codec: 'H264' },
- // Audio: { Bandwidth: '5959', SampleRate: '22050', Codec: 'AAC' }
- // }
- ```
-
- ### .listChannels(query[, options])
-
- List channels.
-
- parameters:
-
- - query {Object} parameters for list
- - prefix {String}: the channel id prefix (returns channels with this prefix)
- - marker {String}: the channle id marker (returns channels after this id)
- - max-keys {Number}: max number of channels to return
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the channel list.
-
- object:
-
- - channels {Array} the channels, each in the structure:
- - Name {String} the channel id
- - Description {String} the channel description
- - Status {String} the channel status
- - LastModified {String} the last modification time of the channel
- - PublishUrls {Array} the publish urls for the channel
- - PlayUrls {Array} the play urls for the channel
- - nextMarker: result.data.NextMarker || null,
- - isTruncated: result.data.IsTruncated === 'true'
- - res {Object} response info
-
- example:
-
- - List live channels
-
- ```js
- const r = await this.store.listChannels({
- prefix: 'my-channel',
- 'max-keys': 3
- });
- console.log(r);
- ```
-
- ### .getChannelHistory(id[, options])
-
- Get the live channel history.
-
- parameters:
-
- - id {String} the channel id
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the history information.
-
- object:
-
- - records {Object} the pushing records, each in the structure:
- - StartTime {String} the start time
- - EndTime {String} the end time
- - RemoteAddr {String} the remote addr
- - res {Object} response info
-
- example:
-
- - Get the live channel history
-
- ```js
- const cid = 'my-channel';
-
- const r = await this.store.getChannelHistory(cid);
- console.log(r);
- ```
-
- ### .createVod(id, name, time[, options])
-
- Create a VOD playlist for the channel.
-
- parameters:
-
- - id {String} the channel id
- - name {String} the playlist name
- - time {Object} the duration time
- - startTime {Number} the start time in epoch seconds
- - endTime {Number} the end time in epoch seconds
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the response information.
-
- object:
-
- - res {Object} response info
-
- example:
-
- - Create a vod playlist of a live channel
-
- ```js
- const cid = 'my-channel';
-
- const r = await this.store.createVod(cid, 're-play', {
- startTime: 1460464870,
- endTime: 1460465877
- });
- console.log(r);
- ```
-
- ### .getRtmpUrl(channelId[, options])
-
- Get signatured rtmp url for publishing.
-
- parameters:
-
- - channelId {String} the channel id
- - [options] {Object} optional parameters
- - [expires] {Number} the expire time in seconds of the url
- - [params] {Object} the additional paramters for url, e.g.: {playlistName: 'play.m3u8'}
- - [timeout] {Number} the operation timeout
-
- Success will return the rtmp url.
-
- example:
-
- - Get a rtmp url.
-
- ```js
- const cid = 'my-channel';
-
- const url = this.store.getRtmpUrl(this.cid, {
- params: {
- playlistName: 'play.m3u8'
- },
- expires: 3600
- });
- console.log(url);
- // rtmp://ossliveshow.oss-cn-hangzhou.aliyuncs.com/live/tl-channel?OSSAccessKeyId=T0cqQWBk2ThfRS6m&Expires=1460466188&Signature=%2BnzTtpyxUWDuQn924jdS6b51vT8%3D
- ```
-
- ## Create A Image Service Instance
-
- Each Image Service instance required `accessKeyId`, `accessKeySecret`, `bucket` and `imageHost`.
-
- ### oss.ImageClient(options)
-
- Create a Image service instance.
-
- options:
-
- - imageHost {String} your image service domain that binding to a OSS bucket
- - accessKeyId {String} access key you create on aliyun console website
- - accessKeySecret {String} access secret you create
- - bucket {String} the default bucket you want to access
- If you don't have any bucket, please use `putBucket()` create one first.
- - [region] {String} the bucket data region location, please see [Data Regions](#data-regions),
- default is `oss-cn-hangzhou`
- Current available: `oss-cn-hangzhou`, `oss-cn-qingdao`, `oss-cn-beijing`, `oss-cn-hongkong` and `oss-cn-shenzhen`
- - [internal] {Boolean} access OSS with aliyun internal network or not, default is `false`
- If your servers are running on aliyun too, you can set `true` to save lot of money.
- - [timeout] {String|Number} instance level timeout for all operations, default is `60s`
-
- example:
-
- ```js
- const oss = require('ali-oss');
-
- const imgClient = oss.ImageClient({
- accessKeyId: 'your access key',
- accessKeySecret: 'your access secret',
- bucket: 'my_image_bucket',
- imageHost: 'thumbnail.myimageservice.com'
- });
- ```
-
- ## Image Operations
-
- All operations function is [async], except `imgClient.signatureUrl`.
-
- async function format: `async functionName(...)`.
-
- ### imgClient.get(name, file[, options])
-
- Get an image from the image channel.
-
- parameters:
-
- - name {String} image object name with operation style store on OSS
- - [file] {String|WriteStream} file path or WriteStream instance to store the image
- If `file` is null or ignore this parameter, function will return info contains `content` property.
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
- - 'If-Modified-Since' object modified after this time will return 200 and object meta,
- otherwise return 304 not modified
- - 'If-Unmodified-Since' object modified before this time will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-Match' object etag equal this will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-None-Match' object etag not equal this will return 200 and object meta,
- otherwise return 304 not modified
-
- Success will return the info contains response.
-
- object:
-
- - [content] {Buffer} file content buffer if `file` parameter is null or ignore
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If object not exists, will throw NoSuchKeyError.
-
- example:
-
- - Get an exists image with a style and store it to the local file
-
- ```js
- const imagepath = '/home/ossdemo/demo.jpg';
- await imgClient.get('ossdemo/demo.jpg@200w_200h', filepath);
- ```
-
- \_ Store image to a writestream
-
- ```js
- await imgClient.get('ossdemo/demo.jpg@200w_200h', somestream);
- ```
-
- - Get an image content buffer
-
- ```js
- const result = await imgClient.get('ossdemo/demo.jpg@200w_200h');
- console.log(Buffer.isBuffer(result.content));
- ```
-
- - Get a not exists object or a not image object
-
- ```js
- const imagepath = '/home/ossdemo/demo.jpg';
- await imgClient.get('ossdemo/not-exists-demo.jpg@200w_200h', filepath);
- // will throw NoSuchKeyError
- ```
-
- ### imgClient.getStream(name[, options])
-
- Get an image read stream.
-
- parameters:
-
- - name {String} image object name with operation style store on OSS
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
- - [headers] {Object} extra headers
- - 'If-Modified-Since' object modified after this time will return 200 and object meta,
- otherwise return 304 not modified
- - 'If-Unmodified-Since' object modified before this time will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-Match' object etag equal this will return 200 and object meta,
- otherwise throw PreconditionFailedError
- - 'If-None-Match' object etag not equal this will return 200 and object meta,
- otherwise return 304 not modified
-
- Success will return the stream instance and response info.
-
- object:
-
- - stream {ReadStream} readable stream instance. If response status is not `200`, stream will be `null`.
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
-
- If object not exists, will throw NoSuchKeyError.
-
- example:
-
- - Get an exists image object stream
-
- ```js
- const result = await imgClient.getStream('ossdemo/demo.jpg@200w_200h');
- result.stream.pipe(fs.createWriteStream('some demo.jpg'));
- ```
-
- ### imgClient.getExif(name[, options])
-
- Get a image exif info by image object name from the image channel.
-
- parameters:
-
- - name {String} image object name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the info contains response.
-
- object:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - data {Object} image exif object
-
- If object don't have exif, will throw 400 BadRequest.
-
- example:
-
- ```js
- const result = await imgClient.getExif('demo.jpg');
- // resut:
- // {
- // res: {
- // status: 200,
- // statusCode: 200,
- // headers: {
- // server: "Tengine",
- // content - type: "application/json",
- // content - length: "148",
- // connection: "keep-alive",
- // date: "Tue, 31 Mar 2015 11:06:32 GMT",
- // "last-modified": "Mon, 30 Mar 2015 10:46:35 GMT"
- // },
- // size: 148,
- // aborted: false,
- // rt: 461,
- // keepAliveSocket: false
- // },
- // data: {
- // FileSize: 343683,
- // ImageHeight: 1200,
- // ImageWidth: 1600,
- // Orientation: 1
- // }
- // }
- ```
-
- ### imgClient.getInfo(name[, options])
-
- Get a image info and exif info by image object name from the image channel.
-
- parameters:
-
- - name {String} image object name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the info contains response.
-
- object:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - data {Object} image exif object
-
- example:
-
- ```js
- const result = await imgClient.getInfo('demo.jpg');
- // resut:
- // {
- // res: {
- // status: 200,
- // statusCode: 200,
- // headers: {
- // server: "Tengine",
- // content - type: "application/json",
- // content - length: "148",
- // connection: "keep-alive",
- // date: "Tue, 31 Mar 2015 11:06:32 GMT",
- // "last-modified": "Mon, 30 Mar 2015 10:46:35 GMT"
- // },
- // size: 148,
- // aborted: false,
- // rt: 461,
- // keepAliveSocket: false
- // },
- // data: {
- // FileSize: 343683,
- // Format: "jpg",
- // ImageHeight: 1200,
- // ImageWidth: 1600,
- // Orientation: 1
- // }
- // }
- ```
-
- ### imgClient.putStyle(name, style[, options])
-
- // TODO
-
- ### imgClient.getStyle(name[, options])
-
- Get a style by name from the image channel.
-
- parameters:
-
- - name {String} image style name
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the info contains response.
-
- object:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - data {Object} styles object
- - Name {String} style name
- - Content {String} style content
- - CreateTime {String} style create time
- - LastModifyTime {String} style last modify time
-
- example:
-
- ```js
- const result = await imgClient.getStyle('400');
- // resut:
- // {
- // res: {
- // status: 200,
- // statusCode: 200,
- // headers: {
- // server: "Tengine",
- // content - type: "application/xml",
- // content - length: "234",
- // connection: "keep-alive",
- // date: "Tue, 31 Mar 2015 10:58:20 GMT"
- // },
- // size: 234,
- // aborted: false,
- // rt: 398,
- // keepAliveSocket: false
- // },
- // data: {
- // Name: "400",
- // Content: "400w_90Q_1x.jpg",
- // CreateTime: "Thu, 19 Mar 2015 08:34:21 GMT",
- // LastModifyTime: "Thu, 19 Mar 2015 08:34:21 GMT"
- // }
- // }
- ```
-
- ### imgClient.listStyle([options])
-
- Get all styles from the image channel.
-
- parameters:
-
- - [options] {Object} optional parameters
- - [timeout] {Number} the operation timeout
-
- Success will return the info contains response.
-
- object:
-
- - res {Object} response info, including
- - status {Number} response status
- - headers {Object} response headers
- - size {Number} response size
- - rt {Number} request total use time (ms)
- - data {Array} styles array, a style object:
- - Name {String} style name
- - Content {String} style content
- - CreateTime {String} style create time
- - LastModifyTime {String} style last modify time
-
- example:
-
- ```js
- const result = await imgClient.listStyle();
- // resut:
- // {
- // res: {
- // status: 200,
- // statusCode: 200,
- // headers: {
- // server: "Tengine",
- // content - type: "application/xml",
- // content - length: "913",
- // connection: "keep-alive",
- // date: "Tue, 31 Mar 2015 10:47:32 GMT"
- // },
- // size: 913,
- // aborted: false,
- // rt: 1911,
- // keepAliveSocket: false
- // },
- // data: [{
- // Name: "200-200",
- // Content: "0e_200w_200h_0c_0i_0o_90Q_1x.jpg",
- // CreateTime: "Thu, 19 Mar 2015 08:28:08 GMT",
- // LastModifyTime: "Thu, 19 Mar 2015 08:28:08 GMT"
- // }, {
- // Name: "800",
- // Content: "800w_90Q_1x.jpg",
- // CreateTime: "Thu, 19 Mar 2015 08:29:15 GMT",
- // LastModifyTime: "Thu, 19 Mar 2015 08:29:15 GMT"
- // }, {
- // Name: "400",
- // Content: "400w_90Q_1x.jpg",
- // CreateTime: "Thu, 19 Mar 2015 08:34:21 GMT",
- // LastModifyTime: "Thu, 19 Mar 2015 08:34:21 GMT"
- // }, {
- // Name: "600",
- // Content: "600w_90Q_1x.jpg",
- // CreateTime: "Thu, 19 Mar 2015 08:35:02 GMT",
- // LastModifyTime: "Thu, 19 Mar 2015 08:35:02 GMT"
- // }]
- // }
- ```
-
- ### imgClient.deleteStyle(name[, options])
-
- // TODO
-
- ### imgClient.signatureUrl(name)
-
- Create a signature url for directly download.
-
- parameters:
-
- - name {String} image object name with operation style store on OSS
- - [options] {Object} optional parameters
- - [expires] {Number} after expires seconds, the url will become invalid, default is `1800`
- - [timeout] {Number} the operation timeout
-
- Success will return full signature url.
-
- example:
-
- ```js
- const url = imgClient.signatureUrl('name');
- ```
-
- ## Cluster Mode
-
- Cluster mode now only support object operations.
-
- ```js
- const Cluster = require('ali-oss').ClusterClient;
-
- const client = Cluster({
- cluster: [
- {
- host: 'host1',
- accessKeyId: 'id1',
- accessKeySecret: 'secret1'
- },
- {
- host: 'host2',
- accessKeyId: 'id2',
- accessKeySecret: 'secret2'
- }
- ],
- schedule: 'masterSlave' //default is `roundRobin`
- });
-
- // listen error event to logging error
- client.on('error', function (err) {
- console.error(err.stack);
- });
-
- // client init ready
- client.ready(function () {
- console.log('cluster client init ready, go ahead!');
- });
- ```
-
- ### Get Methods
-
- Will choose an alive client by schedule(`masterSlave` or `roundRobin`).
-
- - `client.get()`
- - `client.head()`
- - `client.getStream()`
- - `client.list()`
- - `client.signatureUrl()`
- - `client.chooseAvailable()` - choose an available client by schedule.
- - `client.getACL()`
-
- ### Put Methods
-
- Will put to all clients.
-
- - `client.put()`
- - `client.putStream()`
- - `client.delete()`
- - `client.deleteMulti()`
- - `client.copy()`
- - `client.putMeta()`
- - `client.putACL()`
- - `client.restore()`
-
- ## Known Errors
-
- Each error return by OSS server will contains these properties:
-
- - name {String} error name
- - message {String} error message
- - requestId {String} uuid for this request, if you meet some unhandled problem,
- you can send this request id to OSS engineer to find out what's happend.
- - hostId {String} OSS cluster name for this request
-
- ### ResponseTimeoutError
-
- The default timeout is 60 seconds. Please set the timeout as needed. The timeout unit is milliseconds.
-
- ```javascript
- client.get('example.txt', { timeout: 60000 * 2 });
-
- client.get('example.txt', { headers: { Range: `bytes=0-${1024 * 1024 * 100}` } }); // Download the first 100MB
- ```
-
- ### ConnectionTimeoutError
-
- The network link timed out. Please check the network status. If there is no problem with the network, please reduce the partSize or increase the timeout.
-
- ```javascript
- const client = new OSS({ ak, sk, retryMax: 10 });
-
- client.multipartUpload('example.txt', { timeout: 60000 * 2 });
-
- client.multipartUpload('example.txt', { partSize: 1024 * 512 }); // partSize 512KB
- ```
-
- ### The following table lists the OSS error codes:
-
- [More code info](https://help.aliyun.com/knowledge_detail/32005.html)
-
- | name | code | status | message | message in Chinese |
- | ---------------------------------------- | ----------------------------------- | ------ | ------------------------------------------------ | -------------------------------------- |
- | AccessDeniedError | AccessDenied | 403 | Access Denied | 拒绝访问 |
- | BucketAlreadyExistsError | BucketAlreadyExists | 409 | Bucket already exists | Bucket 已经存在 |
- | BucketNotEmptyError | BucketNotEmpty | 409 | Bucket is not empty | Bucket 不为空 |
- | RestoreAlreadyInProgressError | RestoreAlreadyInProgress | 409 | The restore operation is in progress. | restore 操作正在进行中 |
- | OperationNotSupportedError | OperationNotSupported | 400 | The operation is not supported for this resource | 该资源暂不支持restore操作 |
- | EntityTooLargeError | EntityTooLarge | 400 | Entity too large | 实体过大 |
- | EntityTooSmallError | EntityTooSmall | 400 | Entity too small | 实体过小 |
- | FileGroupTooLargeError | FileGroupTooLarge | 400 | File group too large | 文件组过大 |
- | InvalidLinkNameError | InvalidLinkName | 400 | Link name can't be the same as the object name | Object Link 与指向的 Object 同名 |
- | LinkPartNotExistError | LinkPartNotExist | 400 | Can't link to not exists object | Object Link 中指向的 Object 不存在 |
- | ObjectLinkTooLargeError | ObjectLinkTooLarge | 400 | Too many links to this object | Object Link 中 Object 个数过多 |
- | FieldItemTooLongError | FieldItemTooLong | 400 | Post form fields items too large | Post 请求中表单域过大 |
- | FilePartInterityError | FilePartInterity | 400 | File part has changed | 文件 Part 已改变 |
- | FilePartNotExistError | FilePartNotExist | 400 | File part not exists | 文件 Part 不存在 |
- | FilePartStaleError | FilePartStale | 400 | File part stale | 文件 Part 过时 |
- | IncorrectNumberOfFilesInPOSTRequestError | IncorrectNumberOfFilesInPOSTRequest | 400 | Post request contains invalid number of files | Post 请求中文件个数非法 |
- | InvalidArgumentError | InvalidArgument | 400 | Invalid format argument | 参数格式错误 |
- | InvalidAccessKeyIdError | InvalidAccessKeyId | 400 | Access key id not exists | Access Key ID 不存在 |
- | InvalidBucketNameError | InvalidBucketName | 400 | Invalid bucket name | 无效的 Bucket 名字 |
- | InvalidDigestError | InvalidDigest | 400 | Invalid digest | 无效的摘要 |
- | InvalidEncryptionAlgorithmError | InvalidEncryptionAlgorithm | 400 | Invalid encryption algorithm | 指定的熵编码加密算法错误 |
- | InvalidObjectNameError | InvalidObjectName | 400 | Invalid object name | 无效的 Object 名字 |
- | InvalidPartError | InvalidPart | 400 | Invalid part | 无效的 Part |
- | InvalidPartOrderError | InvalidPartOrder | 400 | Invalid part order | 无效的 part 顺序 |
- | InvalidPolicyDocumentError | InvalidPolicyDocument | 400 | Invalid policy document | 无效的 Policy 文档 |
- | InvalidTargetBucketForLoggingError | InvalidTargetBucketForLogging | 400 | Invalid bucket on logging operation | Logging 操作中有无效的目标 bucket |
- | InternalError | Internal | 500 | OSS server internal error | OSS 内部发生错误 |
- | MalformedXMLError | MalformedXML | 400 | Malformed XML format | XML 格式非法 |
- | MalformedPOSTRequestError | MalformedPOSTRequest | 400 | Invalid post body format | Post 请求的 body 格式非法 |
- | MaxPOSTPreDataLengthExceededError | MaxPOSTPreDataLengthExceeded | 400 | Post extra data too large | Post 请求上传文件内容之外的 body 过大 |
- | MethodNotAllowedError | MethodNotAllowed | 405 | Not allowed method | 不支持的方法 |
- | MissingArgumentError | MissingArgument | 411 | Missing argument | 缺少参数 |
- | MissingContentLengthError | MissingContentLength | 411 | Missing `Content-Length` header | 缺少内容长度 |
- | NoSuchBucketError | NoSuchBucket | 404 | Bucket not exists | Bucket 不存在 |
- | NoSuchKeyError | NoSuchKey | 404 | Object not exists | 文件不存在 |
- | NoSuchUploadError | NoSuchUpload | 404 | Multipart upload id not exists | Multipart Upload ID 不存在 |
- | NotImplementedError | NotImplemented | 501 | Not implemented | 无法处理的方法 |
- | PreconditionFailedError | PreconditionFailed | 412 | Pre condition failed | 预处理错误 |
- | RequestTimeTooSkewedError | RequestTimeTooSkewed | 403 | Request time exceeds 15 minutes to server time | 发起请求的时间和服务器时间超出 15 分钟 |
- | RequestTimeoutError | RequestTimeout | 400 | Request timeout | 请求超时 |
- | RequestIsNotMultiPartContentError | RequestIsNotMultiPartContent | 400 | Invalid post content-type | Post 请求 content-type 非法 |
- | SignatureDoesNotMatchError | SignatureDoesNotMatch | 403 | Invalid signature | 签名错误 |
- | TooManyBucketsError | TooManyBuckets | 400 | Too many buckets on this user | 用户的 Bucket 数目超过限制 |
- | RequestError | RequestError | -1 | network error | 网络出现中断或异常 |
- | ConnectionTimeoutError | ConnectionTimeoutError | -2 | request connect timeout | 请求连接超时 |
- | SecurityTokenExpiredError | SecurityTokenExpired | 403 | sts Security Token Expired | sts Security Token 超时失效 |
-
- [generator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*
- [oss-sts]: https://help.aliyun.com/document_detail/oss/practice/ram_guide.html
- [browser-sample]: https://github.com/rockuw/oss-in-browser
- [oss-multipart]: https://help.aliyun.com/document_detail/31992.html
- [disabled-browser-headers]: https://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method
|