@everlast-brands/s3-file-adapter
v2.2.0
Published
Provide amazon s3 information and easily upload and delete images from your bucket
Downloads
10
Readme
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
});