JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q34470F
  • License MIT

Saucepan helps you to store your uploads.

Package Exports

  • saucepan

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (saucepan) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

saucepan

saucepan helps you to store your uploads.

npm

Installation

npm install --save saucepan

Creating an instance

let saucepan = require('saucepan');
let instance = saucepan(options);

options

saucepan(options) accepts an object with following parameters

Key Description Type optional
buffer Buffer representing the file Buffer false
original Set to false if you don't want to store the original image Boolean true defaults:true
sizes Represents the sizes of the image. sizes is an array of objects having two keys path and xy. path is a string that will be concatnated to the resized images and xy indicated the height and width of the image. Array true

Usage

Storing to server directory

let express = require('express');
let multer = require('multer');
let saucepan = require('saucepan');

let app = express();
var upload = multer();

app.post('/upload', upload.single('img'), (req, res) => {
  if(req.file){
    let options = {
      buffer:req.file.buffer,
    }
    
    saucepan(options).storeToLocal('public/images').then(function(result){
      return res.send(result);
    }).catch(function(err){
      console.log("Error");
    });	
  }
  
});


app.listen(8000);

method storeToLocal(path) accepts a path in the server directory. If the path doesn't exists it'll throw an error.

Storing to S3 bucket

let express = require('express');
let multer = require('multer');
let saucepan = require('saucepan');

let app = express();
var upload = multer();

app.post('/upload', upload.single('img'), (req, res) => {
  if(req.file){
    let options = {
      buffer:req.file.buffer,
    }
    
  let s3Options = {
    bucket:"BUCKET-NAME",
    accessKeyId:"ACCESSKEYID",
    secretAccessKey:"SECRETACCESSKEY",
  };
  saucepan(options).storeToS3(s3Options).then(function(results){
    console.log(results);
  }).catch(function(err){
    console.log(err)
  });
 }
  
});

app.listen(8000);

options

method storeToS3(S3options) will accept an object with following parameters

Key Description Type optional
bucket S3 bucket name String false
accessKeyId S3 access key String false
secretAccessKey S3 secret access key String false
acl S3 ACL String true;defaults:'public-read'

Resizing image before storing

//imports
//setup

  let options = {
    buffer:req.file.buffer,
    original:false,//donot store original image
    sizes:[{
      path:'large',
      xy:800
    },{
      path:'medium',
      xy:400
    },{
      path:'small',
      xy:60
    }]
  }
    
  let s3Options = {
    bucket:"BUCKET-NAME",
    accessKeyId:"ACCESSKEYID",
    secretAccessKey:"SECRETACCESSKEY",
  };
  saucepan(options).storeToS3(s3Options).then(function(results){
    console.log(results);
    
    /*[ { ETag: '"cdb84f413588cededvdre2b"',
          VersionId: 'mMdoR3iPcl1csAjY7oRA4O7F.wJ3BcMV',
          path: 'gvK6YAoc0-large.png' },
        { ETag: '"3b964a1e0ff8988dea121e1170321"',
          VersionId: 'D63K2Qa_pI9pLRwTy4Rxa_b6o9Kr54WM',
          path: 'gvK6YAoc0-medium.png' },
        { ETag: '"e7211836192739f64772b23de33cd579"',
          VersionId: 'gXNUNLg8QIi5TG2.nfdDU9al_xTX0SAn',
          path: 'gvK6YAoc0-small.png' } 
      ]*/

  }).catch(function(err){
    console.log(err)
  });