file-management

Simple file management via a provider like S3

Showing:

Popularity

Downloads/wk

1

GitHub Stars

4

Maintenance

Last Commit

3yrs ago

Contributors

5

Package

Dependencies

1

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

file-management

Sonar Sonar Sonar Sonar Sonar Sonar

Library for easy file storage and management supporting upload, downloads and deletes

Description

It relies on an abstract concept of provider to do the work needed. The only concrete implementation, for now, is that of the S3 provider

Tests

TO run integration tests (test/integration dir) you must provide 'AWS_ACCESS_KEY_ID', AWS_SECRET_ACCESS_KEY and AWS_REGION env vars

Examples (S3):

Upload (uploads a file to storage)

const fileManagement = require('file-management');
const fs = require('fs');

const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci';

const manager = fileManagement.create('S3', {
      auth: {
        // AWS creds need to be provided
        AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
        AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
        AWS_REGION: process.env.AWS_REGION,
      },
      // s3 options as needed
      options: {}
    });

 const stream = fs.createReadStream('<path to your file>');
      return manager
      .uploadFile(testLocation, testFileName, stream)
      .then((result) => {
        console.log (result);
      })
      .catch(console.error);

Run cloudfront invalidation

const fileManagement = require('file-management');
const manager = fileManagement.create('S3', {
  auth: {
    // AWS creds need to be provided
    AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
    AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
    AWS_REGION: process.env.AWS_REGION,
  },
  // s3 options as needed
  options: {}
});

const invalidationPaths = ['/css/*', '/img/*']; // ['/*'] by default
const distributionId = '123ABC456EFG' || process.env.CLOUDFRONT_DISTRIBUTION_ID;

manager.invalidate(invalidationPaths, distributionId)
  .then((result) => {
    console.log(result);
  });

Download (Downloads a file from storage)

const fileManagement = require('file-management');
const fs = require('fs');

const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci'; // S3 Bucket

const manager = fileManagement.create('S3', {
      auth: {
        // AWS creds need to be provided
        AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
        AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
        AWS_REGION: process.env.AWS_REGION,
      },
      // s3 options as needed
      options: {}
    });

  const stream = fs.createWriteStream(testFileName);
       return manager
       .downloadFile(testLocation, testFileName, stream)
       .then(() => {
         if (!fs.existsSync(testFileName)) {
           throw new Error('File does not exist');
         } else {
           // all ok, file downloaded, delete it
           fs.unlinkSync(testFileName);
         }
       });

Delete (deletes a file on storage)

const fileManagement = require('file-management');

const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci'; // S3 Bucket

const manager = fileManagement.create('S3', {
      auth: {
        // AWS creds need to be provided
        AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
        AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
        AWS_REGION: process.env.AWS_REGION,
      },
      // s3 options as needed
      options: {}
    });

  manager
    .deleteFile(testLocation, testFileName)
    .then(() => {
      console.log('File deleted!');
    })
    .catch(console.error);

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial