Skip to main content

File Storage

S3-compatible file uploads.

Package: @repo/storage Built on: AWS S3 SDK

Setup

# .env
S3_ENDPOINT=http://localhost:9000
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET=uploads
S3_REGION=us-east-1

File Upload Component

<script lang="ts">
import { FileInput } from '@repo/storage'
</script>

<form method="POST" enctype="multipart/form-data">
<FileInput.Root name="avatar" accept="image/*" />
<button type="submit">Upload</button>
</form>

Server Handler

// users.remote.ts
import { ServerFileManager } from '@repo/storage'
import { form } from '$app/server'

export const updateAvatar = form(schema, async (data, { request }) => {
const files = new ServerFileManager(request)
const avatar = await files.sync('avatar', 'avatars')

await db.update(users)
.set({ avatarUrl: avatar.url })
.where(eq(users.id, data.userId))
})

Full Documentation

See @repo/storage for complete API reference.