# scs-sdk

> SCS SDK for JavaScript

Latest version **0.1.4** (published 2014-09-09) · 0 weekly downloads

## Install

```sh
npm install scs-sdk
pnpm add scs-sdk
yarn add scs-sdk
bun add scs-sdk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.4 |
| Published | 2014-09-09 |
| First published | 2014-08-21 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.8.0 |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 9 |
| Author | Sina Cloud Storage |
| Maintainers | cloudmario |
| Keywords | api, sina, aws, scs, s3, rest, sinacloud, cloudmario |

## Links

- npm: https://www.npmjs.com/package/scs-sdk
- Repository: https://github.com/SinaCloudStorage/scs-sdk-js
- Issues: http://github.com/SinaCloudStorage/scs-sdk-js/issues
- npm.io page: https://npm.io/package/scs-sdk

## Dependencies (3)

- [xml2js](https://npm.io/package/xml2js.md) 0.2.6
- [xmlbuilder](https://npm.io/package/xmlbuilder.md) 0.4.2
- [scs-sdk-apis](https://npm.io/package/scs-sdk-apis.md) >=3.1.0 <7.0.0

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 0.1.4 (latest) — 2014-09-09
- 0.1.0 (0.1.1) — 2014-08-21
- 0.1.3 — 2014-08-23
- 0.1.2 — 2014-08-22
- 0.1.1 — 2014-08-21

## README

scs-sdk-js
==========

新浪云存储(SCS) SDK for Node.js

### Installation

	npm install scs-sdk

### Usage
  
#### 初始化`SinaCloud`

```javascript
var SinaCloud = require('scs-sdk');
```

#### 配置

##### 方法1:

```javascript

var config = new SinaCloud.Config({
	accessKeyId: '你的accessKey', 
	secretAccessKey: '你的secretKey',
	sslEnabled: false
});

//全局生效:
SinaCloud.config = config;
```
  

##### 方法2:
  
创建一个json文件`config.json`:

```javascript

{
	"accessKeyId": "你的accessKey", 
	"secretAccessKey": "你的secretKey",
	"sslEnabled": true
}
```

加载`config.json`:

```javascript

//全局生效:
SinaCloud.config.loadFromPath('./config.json');
```
  
##### 方法3:

```javascript

var config = new SinaCloud.Config({
	accessKeyId: '你的accessKey', 
	secretAccessKey: '你的secretKey',
	sslEnabled: false
});

//实例化:
var s3 = new SinaCloud.S3();
//当前实例生效:
s3.config = config;
```
  
#### 实例化

##### 示例1:

```javascript

var s3 = new SinaCloud.S3();
```
  
##### 示例2:

```javascript

var mybucket = new SinaCloud.S3({params: {Bucket: 'mybucket'}});
```

##### 示例3:

```javascript

var myobject = new SinaCloud.S3({params: {Bucket: 'mybucket', Key: 'mykey'}});
```

#### 调用

##### 创建一个bucket并上传一个文件:

```javascript

var SinaCloud = require('scs-sdk');
SinaCloud.config.loadFromPath('./config.json');

var myBucket = new SinaCloud.S3({params: {Bucket: 'myBucket'}});
myBucket.createBucket(function() {
	var data = {Key: 'myKey', Body: 'Hello!'};
	myBucket.putObject(data, function(err, data) {
		if (err) {
			console.log("Error uploading data: ", err);
		} else {
			console.log("Successfully uploaded data to myBucket/myKey");
		}
	});
});
```
	

##### 列出所有bucket:

```javascript

var s3 = new SinaCloud.S3();

s3.listBuckets(function(err, data) {
	if (err)
		console.log(err, err.stack); // an error occurred
	else
		console.log(data);           // successful response
});
```
	
##### 列出bucket中的文件:

```javascript

var params = {
	Bucket: 'bucket-name',	//required
	Delimiter: '/',			//用'/'折叠
	Marker: '',				//分页标签
	MaxKeys: 100,			//最大成员数
	Prefix: 'xxx'			//按前缀查询
};

s3.listObjects(params, function(err, data) {

	if (err) 
		console.log(err, err.stack); // an error occurred
	else     
		console.log(data);           // successful response
});
```
	
##### 下载文件示例1:

```javascript

var s3 = new SinaCloud.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);
```

##### 下载文件示例2:

```javascript

var s3 = new SinaCloud.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');

s3.getObject(params).on('httpData', function(chunk) {
	file.write(chunk); 
}).on('httpDone', function() {
	file.end();
}).on('httpDownloadProgress', function(progress) {
	console.log(progress);
}).on('error', function(error) {
	console.log(error);
}).on('success', function() {
	console.log('success');
}).on('httpHeaders', function(statusCode, headers) {
	console.log('statusCode: ' + statusCode + "\n", headers);
}).send();
```
	
##### 上传文件示例1：

```javascript

var s3 = new SinaCloud.S3();
var file = require('fs').createReadStream('/path/to/file.jpg');
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg', Body: file};
s3.putObject(params).on('httpHeaders', function(statusCode, headers) { 
	console.log(headers);
}).on('httpUploadProgress', function(progress) {
	console.log(progress);
}).on('error', function(error) {
	console.log(error);
}).on('success', function() {
	console.log('success');
}).send();
```
	
##### 上传文件示例2：

```javascript

var fileName = '/file/path/IMG_3218.JPG';
var remoteFilename = 'IMG_3218.JPG';
var s3 = new SinaCloud.S3();
var fileBuffer = require('fs').readFileSync(fileName);

s3.putObject({
	ACL: 'public-read',
	Bucket: 'mybucket',
	Key: remoteFilename,
	Body: fileBuffer
}, function(error, response) {
	if (error) {
		console.log(error);
	} else {
		console.log('uploaded file[' + fileName + '] to [' + remoteFilename + ']');
	}
});
```

##### 上传文件示例3：

```javascript

var myBucket = new SinaCloud.S3({params: {Bucket: 'myBucket'}});
var data = {Key: 'myKey', Body: 'Hello!'};
myBucket.putObject(data, function(err, data) {
	if (err) {
		console.log("Error uploading data: ", err);
	} else {
		console.log("Successfully uploaded data to myBucket/myKey");
	}
});
```

##### 获取bucket的acl信息:
	
```javascript

var s3bucket = new SinaCloud.S3({params: {Bucket: 'myBucket'}});

s3bucket.getBucketAcl(function(err, data) {
	if (err) {
		console.log(err);	// an error occurred
	} else {
		console.log(data);	// successful response
	}
});
```

##### 删除一个文件:

```javascript

var s3 = new SinaCloud.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
s3.deleteObject(params, function(err, data) {
	if (err) {
		console.log(err);	// an error occurred
	} else {
		console.log(data);	// successful response
	}
});
```
	
##### 删除一个bucket:

```javascript

var s3 = new SinaCloud.S3();
var params = {Bucket: 'myBucket'};
s3.deleteBucket(params, function(err, data) {
	if (err) {
		console.log(err);	// an error occurred
	} else {
		console.log(data);	// successful response
	}
});
```
	
##### 获取一个带有签名的用于下载的url:

```javascript

var s3 = new SinaCloud.S3();

// This URL will expire in one minute (60 seconds)
var params = {Bucket: 'myBucket', Key: 'myKey', Expires: 60};
var url = s3.getSignedUrl('getObject', params);
console.log("The URL is", url);
```

---
_Source: https://npm.io/package/scs-sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
