Skip to main content

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);