2.2.0 • Published 2 years ago

@everlast-brands/s3-file-adapter v2.2.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Everlast Brands S3 File Adapter

Use this adapter to simply upload, and delete images stored in a public amazon s3 public bucket.

Installation

yarn add @everlast-brands/s3-file-adapter
// or
npm install @everlast-brands/s3-file-adapter
import express from "express";
import { FileAdapter } from "@everlast-brands/s3-file-adapter";

const app = express();

// add collections to the server
app.use((req, res, next) => {
  req.s3 = new FileAdapter({
    region: process.env.AWS_REGION,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    accessKey: process.env.AWS_ACCESS_KEY_ID,
    bucketName: process.env.AWS_S3_BUCKET,
    filePrefix: "app-name", // optional - prefixes filenames you upload
  })
})

// ...rest of app

Usage

Buffering Option

app.post("/users/:userId/images", async (req, res) => {
  const file = req.files["file-key"];
  const imgUrl = await req.s3.upload({
    file,
    forceUniqueness: true, // optional - adds random string to the prefix
    fileName: "brandons-profile-image", // optional - customize the file name
  });

  // ...save imageUrl in database
});

Streaming Option

app.post("/users/:userId/images", async (req, res) => {
  // This is a custom header we set with json object with file metadata
  const {size, name} = JSON.parse(req.headers["file-metadata"]);
  const fileStream = {
    data: req,
    size,
    name
  }
  const imgUrl = await req.s3.uploadStream({
    fileStream,
    forceUniqueness: true, // optional - adds random string to the prefix
    fileName: "brandons-profile-image", // optional - customize the file name
  });

  // ...save imageUrl in database
});