Skip to main content
zerotal

Documentation


Documentation / zerotal / storage / StorageFilesMiddleware

Class: StorageFilesMiddleware

Defined in: packages/core/src/storage/StorageFilesMiddleware.ts:48

Serves files from a storage disk over HTTP.

Only disks that declare serve in config/storage.ts are reachable; the rest have no URL at all. That is the safe default for a disk holding private uploads — exposure is something you ask for, one disk at a time, rather than something you remember to switch off.

Router.static() cannot do this job: it registers the files it finds at boot, so anything uploaded afterwards is invisible until a restart. This resolves per request, through the driver, so an S3-backed disk can be proxied the same way a local one is served.

Example

// config/storage.ts — public assets, and private files behind signed links
disks: {
  public:  { driver: "local", root: "./storage/public",
             serve: { path: "/storage/public" } },
  private: { driver: "local", root: "./storage/invoices",
             serve: { path: "/files", signed: true } },
}

Extends

Constructors

Constructor

new StorageFilesMiddleware(): StorageFilesMiddleware

Defined in: packages/core/src/middleware/BaseMiddleware.ts:36

Returns

StorageFilesMiddleware

Inherited from

BaseMiddleware.constructor

Properties

options

protected options: StorageFilesOptions = {}

Defined in: packages/core/src/storage/StorageFilesMiddleware.ts:49

Subclasses must declare this with their default option values. TypeScript enforces this at compile time — forgetting it is a type error.

Overrides

BaseMiddleware.options

Methods

with()

static with<T, Opts>(this, options): () => InstanceType<T>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:48

Returns a zero-arg subclass with the given options deep-merged on top of the subclass defaults, usable directly in app.use([...]).

Type Parameters

T

T extends (...args) => BaseMiddleware<any>

Opts

Opts = T extends (...args) => BaseMiddleware<U> ? U : object

Parameters

this

T

options

Partial<Opts>

Returns

() => InstanceType<T>

Inherited from

BaseMiddleware.with


afterResponse()?

optional afterResponse(ctx): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:70

Parameters

ctx

HttpContext

Returns

Promise<void>

Inherited from

BaseMiddleware.afterResponse


onError()?

optional onError(ctx, error): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:71

Parameters

ctx

HttpContext

error

Error

Returns

Promise<void>

Inherited from

BaseMiddleware.onError


handle()

handle(http, next): Promise<void | Response>

Defined in: packages/core/src/storage/StorageFilesMiddleware.ts:51

Parameters

http

HttpContext

next

NextFn

Returns

Promise<void | Response>

Overrides

BaseMiddleware.handle