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
});