https://github.com/ecomfe/baidubce-sdk
Baidu Cloud Engine Node.js SDK
https://github.com/ecomfe/baidubce-sdk
Last synced: 11 months ago
JSON representation
Baidu Cloud Engine Node.js SDK
- Host: GitHub
- URL: https://github.com/ecomfe/baidubce-sdk
- Owner: ecomfe
- Created: 2015-05-31T12:58:13.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2020-09-01T03:19:40.000Z (almost 6 years ago)
- Last Synced: 2025-05-25T08:05:14.446Z (about 1 year ago)
- Language: JavaScript
- Homepage: http://sdk.baidubce.tk/index.html#/!bos/
- Size: 11.2 MB
- Stars: 28
- Watchers: 8
- Forks: 57
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## baidubce-sdk
Baidu Cloud Engine Node.js SDK
1. BS (Baidu Cloud Storage)
2. BOS (Baidu Object Storage)
3. BCC (Baidu Cloud Compute)
4. BFR (Baidu Face Recognition)
5. Media
## Install
```
npm i baidubce-sdk
```
## Usage
### createBucket
```
var bce = require('baidubce-sdk');
var config = {
credentials: {
ak: 'ak',
sk: 'sk'
},
endpoint: 'http://10.105.97.15'
};
var bucket = 'this-is-a-bucket';
var client = new bce.BosClient(config);
client.createBucket(bucket)
.then(function(response) {
console.log(response);
})
.then(function() {
return client.deleteBucket(bucket);
})
.catch(function(error) {
console.error(error);
});
```
### putObject
常用接口:
1. putObjectFromString
2. putObjectFromFile
```
var bce = require('baidubce-sdk');
var config = {
credentials: {
ak: 'ak',
sk: 'sk'
},
endpoint: 'http://10.105.97.15'
};
var bucket = 'this-is-a-bucket';
var key = 'hello_world.js';
var client = new bce.BosClient(config);
client.createBucket(bucket)
.then(function() {
return client.putObjectFromFile(bucket, key, __filename);
})
.then(function() {
return client.getObjectMetadata(bucket, key);
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.error(error);
});
```
### multipartUpload
常用接口:
1. initiateMultipartUpload
2. uploadPartFromFile
3. completeMultipartUpload
```
var Q = require('q');
var bce = require('baidubce-sdk');
var config = {
credentials: {
ak: 'ak',
sk: 'sk'
},
endpoint: 'http://10.105.97.15'
};
var bucket = 'this-is-a-bucket';
var key = 'large_file';
var large_file = 'this/is/a/large/file/path';
var filesize = fs.lstatSync(large_file).size;
var upload_id = null;
var client = new bce.BosClient(config);
client.createBucket(bucket)
.then(function() {
return client.initiateMultipartUpload(bucket, key);
})
.then(function(response) {
upload_id = response.body.uploadId;
var left_size = filesize;
var offset = 0;
var part_number = 1;
var defers = [];
while (left_size > 0) {
var part_size = Math.min(left_size, 5 * 1024 * 1024);
defers.push(client.uploadPartFromFile(
bucket, file, upload_id,
part_number, part_size, large_file, offset
));
left_size -= part_size;
offset += part_size;
part_number += 1;
}
return Q.all(defers);
})
.then(function(all_response) {
var part_list = [];
for (var i = 0; i < all_response.length; i ++) {
var response = all_response[i];
part_list.push({
partNumber: i + 1,
eTag: response.http_headers.etag
});
}
return client.completeMultipartUpload(bucket, key, upload_id, part_list);
})
.then(function(response) {
console.log(response)
})
.catch(function(error) {
console.error(error);
});
```
## Browser Usage
Use the `putObjectFromBlob` api.
```
browserify -s baidubce-sdk index.js -o baidubce-sdk.bundle.js
```
```
var sdk = require('./baidubce-sdk.bundle');
var $ = require('jquery');
$('files').on('change', function (evt) {
var file = evt.target.files[0];
var client = new sdk.BosClient(getBOSConfig());
var bucket = getBucket();
var key = file.name;
var blob = file;
var ext = key.split(/\./g).pop();
var mimeType = sdk.MimeType.guess(ext);
if (/^text\//.test(mimeType)) {
mimeType += '; charset=UTF-8';
}
var options = {
'Content-Type': mimeType
};
var promise = client.putObjectFromBlob(bucket, key, blob, options);
client._httpAgent._req.xhr.upload.onprogress = function (evt) {
if (evt.lengthComputable) {
$('#g_progress').val(evt.loaded / evt.total);
}
};
promise.then(function (res) {
$('#g_progress').val(1);
var url = client.generatePresignedUrl(bucket, key)
$('#g_url').html('下载地址');
})
.catch(function (err) {
console.error(err);
});
});
```
### Others
More api usages please refer
* [test/sdk/bos_client.spec.js](test/sdk/bos_client.spec.js)
* [test/sdk/bcs_client.spec.js](test/sdk/bcs_client.spec.js)
* [test/sdk/bcc_client.spec.js](test/sdk/bcc_client.spec.js)
* [test/sdk/face_client.spec.js](test/sdk/face_client.spec.js)