swiftjs-plugin-s3
v0.0.1
Published
AWS S3 cloud storage plugin for SwiftJS
Maintainers
Readme
swiftjs-plugin-s3
AWS S3 cloud storage plugin for SwiftJS applications.
Installation
npm install swiftjs-plugin-s3Usage
import { createApp } from 'swiftjs-core';
import { s3Plugin, getS3 } from 'swiftjs-plugin-s3';
const app = createApp();
// Register the S3 plugin
app.register(s3Plugin({
region: 'us-east-1',
bucket: 'my-bucket',
// Optional: explicit credentials (defaults to AWS SDK credential chain)
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!
}
}));
// Upload a file
app.post('/upload', async (ctx) => {
const s3 = getS3(ctx);
const result = await s3.upload('uploads/image.png', ctx.body.file, {
contentType: 'image/png',
acl: 'public-read'
});
return { url: result.location };
});
// Download a file
app.get('/download/:key', async (ctx) => {
const s3 = getS3(ctx);
const buffer = await s3.download(ctx.params.key);
return buffer;
});
// Generate presigned URL
app.get('/presign/:key', async (ctx) => {
const s3 = getS3(ctx);
const url = await s3.getSignedUrl(ctx.params.key, 3600);
return { url };
});
// List files
app.get('/files', async (ctx) => {
const s3 = getS3(ctx);
const result = await s3.list('uploads/', 100);
return result.objects;
});
app.listen();S3-Compatible Storage
Works with any S3-compatible storage (MinIO, DigitalOcean Spaces, etc.):
app.register(s3Plugin({
region: 'us-east-1',
bucket: 'my-bucket',
endpoint: 'https://minio.example.com',
forcePathStyle: true
}));API
s3Plugin(options)
Register the S3 plugin with your SwiftJS app.
getS3(ctx)
Get the S3 client from the request context.
S3Client Methods
| Method | Description |
|--------|-------------|
| upload(key, data, options?) | Upload a file |
| download(key) | Download file as Buffer |
| downloadStream(key) | Download file as ReadableStream |
| delete(key) | Delete a file |
| deleteMany(keys) | Delete multiple files |
| exists(key) | Check if file exists |
| getSignedUrl(key, expiresIn?) | Generate presigned download URL |
| getSignedUploadUrl(key, expiresIn?, options?) | Generate presigned upload URL |
| list(prefix?, maxKeys?, token?) | List files with prefix |
| copy(sourceKey, destKey) | Copy a file |
License
MIT
