JSPM

s3-direct-upload

0.1.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 31
  • Score
    100M100P100Q69225F
  • License MIT

s3-browser-direct-upload for node

Package Exports

  • s3-direct-upload

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 (s3-direct-upload) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Logotype

Node Amazon S3 Browser Direct Upload

s3-browser-direct-upload is a node.js library which gives you the ability to upload files to Amazon S3 easily using:

  • browser/mobile-based straight-to-S3 uploads using POST
  • S3.upload method
  • S3.putObject method
  • works with v4 signature version

In addition you can limit allowed file extensions.

amazon s3 browser post
Image source:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html

Install

npm install s3-browser-direct-upload

Usage examples

Create a client

var s3BrowserDirectUpload = require('s3-browser-direct-upload');

var s3clientOptions = {
  accessKeyId: 'accessKeyId', // required
  secretAccessKey: 'secretAccessKey', // required
  region: 'eu-central-1', // required
  signatureVersion: 'v4' // optional
};

var allowedTypes = ['jpg', 'png'];

var s3client = new s3BrowserDirectUpload(s3clientOptions, allowedTypes); // allowedTypes is optional

For more information check API documentation.

Upload using s3client.uploadPostForm (Browser-based uploads using POST)

var uploadPostFormOptions = {
  key: 'filename.ext', // required
  bucket: 'bucketName', // required
  extension: 'ext', // optional (pass if You want to check with allowed extensions or set ContentType)
  acl: 'public-read', // optional, default: 'public-read'
  expires: new Date('2018-01-01'), // optional (date object with expiration date for urls), default: +60 minutes
  algorithm: 'AWS4-HMAC-SHA256', // optional, default: 'AWS4-HMAC-SHA256'
  region: 'eu-central-1', // optional, default: s3client.region
  conditionMatching: [
    {"success_action_redirect": "http://google.com"},
    {"x-amz-meta-metadatafield": ""},
    ["starts-with", "$key", "user/betty/"],
    ["condition", "key", "pattern"]
  ] // optional
};

s3client.uploadPostForm(uploadPostFormOptions, function(err, params){
  console.log(params); // params contain all the data required to build browser-based form for direct upload (check API Documentation)
});

For more information check API documentation.

Upload using s3client.upload (S3#upload)

var fs = require('fs');

var uploadOptions = {
  data: fs.createReadStream('/path/to/a/file'), // required
  key: 'filename.ext', // required
  bucket: 'bucketName', // required
  extension: 'ext', // optional (pass if You want to check with allowed extensions or set ContentType)
  acl: 'public-read' // optional
};

s3client.upload(uploadOptions, function(err, url) {
  console.log(url); // url to uploaded data
});

For more information check API documentation.

Upload using s3client.put (S3#putObject)

var uploadOptions = {
  key: 'filename.ext', // required
  bucket: 'bucketName', // required
  extension: 'ext', // optional (pass if You want to check with allowed extensions or set ContentType)
  acl: 'public-read', // optional
  expires: new Date('2018-01-01') // optional (date object with expiration date for urls)
};

s3client.put(uploadOptions, function(err, data){
  console.log(data); // data contains public url and signed url
});

For more information check API documentation.

API Documentation

s3client constructor parameters

options (JSON or AWS.Config object):

  • accessKeyId (String, required)
  • secretAccessKey (String, required)
  • region (String, required)
  • signatureVersion (String, optional)
  • maxRetries (Integer, optional)
  • maxRedirects (Integer, optional)
  • systemClockOffset (Number, optional)
  • sslEnabled (Boolean, optional)
  • paramValidation (Boolean, optional)
  • computeChecksums (Boolean, optional)
  • convertResponseTypes (Boolean, optional)
  • s3ForcePathStyle (Boolean, optional)
  • s3BucketEndpoint (Boolean, optional)
  • httpOptions (JSON {proxy, agent, timeout, xhrAsync, xhrWithCredentials}, optional)
  • apiVersions (JSON {versions}, optional)
  • apiVersion (String/Date, optional)
  • sessionToken (AWS.Credentials, optional)
  • credentials (AWS.Credentials, optional)
  • credentialProvider (AWS.CredentialsProviderChain, optional)
  • logger (Logger object with #write,#log methods, optional)

arrayOfAllowedTypes (array of strings ex. ["jpg"])

s3client.uploadPostForm

options (JSON):

  • key (String, required)
  • bucket (String, required)
  • extension (String, optional)
  • expires (String/Date, optional, default: +60 minutes)
  • acl (String, optional, default: 'public-read')
  • contentLength (Integer, optional)
  • algorithm (String, optional, default: 'AWS4-HMAC-SHA256')
  • region (String, optional, default: s3client.region)
  • conditionMatching (Array, optional)

callback (err, params), returned params (JSON):

  • params:
    • key
    • acl
    • x-amz-algorithm
    • x-amz-credential
    • x-amz-date
    • policy
    • x-amz-signature
    • content-type
  • public_url
  • form_url
  • conditions

s3client.upload

options (JSON):

  • data (File, String, Buffer, ReadableStream, ..., required)
  • key (String, required)
  • bucket (String, required)
  • extension (String, optional)
  • expires (String/Date, optional)
  • acl (String, optional)
  • contentLength (Integer, optional)

callback (err, url), returned url (String)

s3client.put

options (JSON):

  • key (String, required)
  • bucket (String, required)
  • extension (String, optional)
  • expires (String/Date, optional)
  • acl (String, optional)

callback (err, urls), returned urls (JSON):

  • urls:
    • signed_url
    • public_url

License

MIT

Copyright Gabriel Oczkowski