2.3 KiB
loopback-storage-service
LoopBack Storage Service
Storage
The loopback-storage-service
module is designed to make it easy to upload and download files to various infrastructure providers.
To get started with a loopback-storage-service
provider just create one:
var storageService = require('loopback-storage-service')({
//
// The name of the provider (e.g. "file")
//
provider: 'provider-name',
//
// ... Provider specific credentials
//
});
Each compute provider takes different credentials to authenticate; these details about each specific provider can be found below:
-
Amazon
{ provider: 'amazon', key: '...', keyId: '...' }
-
Rackspace
{ provider: 'rackspace', username: '...', apiKey: '...' }
-
Azure
-
Local File System
{ provider: 'filesystem', root: '/tmp/storage' }
Each instance of storage.Client
returned from storage.createClient
has a set of uniform APIs:
Container
storageService.getContainers(function (err, containers) { })
storageService.createContainer(options, function (err, container) { })
storageService.destroyContainer(containerName, function (err) { })
storageService.getContainer(containerName, function (err, container) { })
File
storageService.upload(options, function (err) { })
storageService.download(options, function (err) { })
storageService.getFiles(container, function (err, files) { })
storageService.getFile(container, file, function (err, server) { })
storageService.removeFile(container, file, function (err) { })
Both the .upload(options)
and .download(options)
have had careful attention paid to make sure they are pipe and stream capable:
Upload a File
var storage = require('loopback-storage-service'),
fs = require('fs');
var storageService = storage({ /* ... */ });
fs.createReadStream('a-file.txt').pipe(storageService.uploadStream('a-container','remote-file-name.txt'));
Download a File
var storage = require('loopback-storage-service'),
fs = require('fs');
var storageService = storage({ /* ... */ });
storageService.downloadStream({
container: 'a-container',
remote: 'remote-file-name.txt'
}).pipe(fs.createWriteStream('a-file.txt'));