Storage
A file storage interface to work with Local File Storage and S3.
Additionally, video files can bу uploaded to the Youtube or Vimeo
Usage
Install package.
$ npm i jb-file-storage --save
Work with Local storage.
const Storage = require('jb-file-storage');
const Fs = require('fs');
const LocalStorage = new Storage('local', {
basePath: './public/uploads/',
baseUrl: 'http://localhost:8080/public/uploads/'
});
let input = '/path/to/source/file.txt';
input = Fs.createReadStream(input);
LocalStorage.saveFile(input, 'path/to/dest/file.txt', 'text/plain', (err, result) => {
if (err) {
return console.log(err);
}
console.log(result);
});
LocalStorage.deleteFile('path/to/file.txt', (err) => {
if (err) {
return console.log(err);
}
console.log('success!')
});
LocalStorage.deleteDir('path/to/folder', (err) => {
if (err) {
return console.log(err);
}
console.log('success!')
});
S3
You need to create S3 Bucket and get Access Key and Secret Access Key.
See Managing Access Keys for Your AWS Account guide.
const Storage = require('jb-file-storage');
const S3Storage = new Storage('s3', {
basePath: 'project/uploads/',
baseUrl: 'https://{bucket}.s3.amazonaws.com/project/uploads/',
s3config: {
accessKeyId: '{access-key}',
secretAccessKey: '{secret-access-key}',
params: {
Bucket: '{bucket}',
ACL: 'public-read'
}
}
});
Youtube
Read Obtaining authorization credentials to get
Client Id and App Secret.
To make Youtube upload work, we need to authorize API requests with oAuth Token.
Add your domain URI to the Authorized JavaScript origins. For example: http://localhost:8080
.
Add callback URI http://localhost:8080/api/settings/youtubeoauth/callback
to the Authorized redirect URIs.
TODO: Add description on how to retrieve Youtube Access Token and routes configuration
const Storage = require('jb-file-storage');
const YoutubeStorage = new Storage('youtube', {
baseUrl: 'https://www.youtube.com',
type: 'oauth',
auth: {
accessToken: '{oauth-access-token}'
},
apiConfig: {
clientId: '{client-id}',
appSecret: '{app-secret}'
}
});
Vimeo
Read Getting Started guide to get API Config values.
const Storage = require('jb-file-storage');
const VimeoStorage = new Storage('vimeo', {
baseUrl: 'https://player.vimeo.com/video/',
apiConfig: {
clientId: '{client-id}',
appSecret: '{app-secret}',
accessToken: '{access-token}'
}
});