Skip to content

Repository files navigation

Uplo

Handle file uploads to various storage services like Amazon S3, Google Cloud or etc. It also supports various type of ORM adapters, like Prisma.

Features

  • TypeScript ready
  • Direct uploads
  • Supports multiple services
  • Multiple ORM adapters
  • File analyzers

Getting started

Add @uplo/node to your package.json

pnpm add @uplo/node

Install Adapter (for example Prisma)

pnpm add @uplo/adapter-prisma dataloader

Install Service (for example S3)

pnpm add @uplo/service-s3

Define uplo instance

import { createUplo } from '@uplo/node'
import { createPrismaAdapter } from '@uplo/adapter-prisma'
import { createS3Service } from '@uplo/service-s3'

const config = {
  privateKey: process.env.APPLICATION_SECRET, // Used to sign direct upload keys
  signedIdExpiresIn: 60 * 60, // Time how long a Signed ID is valid
}

const uplo = createUplo({
  config,
  adapter: createPrismaAdapter({ prisma }),
  services: {
    s3: createS3Service({
      isPublic: false,
      region: process.env.AWS_REGION,
      bucket: process.env.AWS_BUCKET,
      accessKeyId: '*****',
      secretAccessKey: '*****',
    }),
  },
  attachments: {
    user: {
      avatar: {
        validate: {
          contentType: /image\/*/,
        },
      },
    },
    post: {
      images: { multiple: true },
    },
  },
})

const attachment = await uplo.attachments.user(123).avatar.attachFile(
  await blobFileInput({
    path: '/home/images/image.png',
  }),
)

License

The package is available as open source under the terms of the MIT License.

About

Handle file uploads to different storage services like Amazon S3, Google Cloud or etc. It also supports different type of ORM adapters, like Prisma.

Topics

Resources

Code of conduct

Stars

14 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages