Recipes
Signed local storage download URL
Requires storage.local.signed.secret to be set. The URL is built from storage.local.http.basePath
({basePath}/download?token=...) — this package only signs and verifies the token; it does not register the
HTTP route itself. See @quik/storage-express's RequireLocalStorageToken for verifying the token in a route.
import { PresignedLocalURLEntity, QLocalStorageEngine, StorageStore } from '@quik/storage';
const engine = new QLocalStorageEngine();
StorageStore.register(engine.name, engine);
const { url } = await PresignedLocalURLEntity.getDownloadURL('uploads/avatar.png');
Signed S3 URL
import { PresignedS3URLEntity, QS3StorageEngine, StorageStore } from '@quik/storage';
const engine = new QS3StorageEngine();
StorageStore.register(engine.name, engine);
const { url } = await PresignedS3URLEntity.getUploadURL('uploads/avatar.png');
Streaming large files
import { createReadStream } from 'node:fs';
await engine.saveStream('uploads/big.bin', createReadStream('/tmp/big.bin'));
const stream = await engine.readStream('uploads/big.bin');
Sign a value manually
Use LocalSignature.sign/verify directly when you need a signed token outside of PresignedLocalURLEntity
(for example, a custom purpose beyond "upload"/"download"):
import { LocalSignature } from '@quik/storage';
const token = LocalSignature.sign({ path: 'uploads/avatar.png', purpose: 'download' }, 120);
const { path, purpose } = LocalSignature.verify(token);