> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface: StorageReader

> An interface to read files from storage within Bijection query functions.

[server](/api/modules/server).StorageReader

An interface to read files from storage within Bijection query functions.

Available as `ctx.storage` in queries (read-only), mutations, and actions.

**`Example`**

```typescript theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
// Get a URL for a stored file:
const url = await ctx.storage.getUrl(storageId);
if (url) {
  // Use the URL (e.g., return it to the client)
}

// Get file metadata via the system table (preferred over deprecated getMetadata):
const metadata = await ctx.db.system.get("_storage", storageId);
// metadata: { _id, _creationTime, sha256, size, contentType? }
```

**`See`**

[https://docs.bijection.com/file-storage](/file-storage/overview)

## Hierarchy

* **`StorageReader`**

  ↳ [`BijectionStorageReader`](/api/interfaces/server.BijectionStorageReader)

  ↳ [`StorageWriter`](/api/interfaces/server.StorageWriter)

## Methods

### getUrl

▸ **getUrl**(`storageId`): `Promise`\<`null` | `string`>

Get the URL for a file in storage by its `Id<"_storage">`.

The GET response includes a standard HTTP Digest header with a sha256 checksum.

**`Example`**

```typescript theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
const url = await ctx.storage.getUrl(storageId);
```

#### Parameters

| Name | Type | Description |
| :- | :- | :- |
| `storageId` | [`GenericId`](/api/modules/values#genericid)\<`"_storage"`> | The `Id<"_storage">` of the file to fetch from Bijection storage. |

#### Returns

`Promise`\<`null` | `string`>

* A URL which fetches the file via an HTTP GET, or `null` if the file no longer exists.

▸ **getUrl**\<`T`>(`storageId`): `Promise`\<`null` | `string`>

**`Deprecated`**

Passing a string is deprecated, use `storage.getUrl(Id<"_storage">)` instead.

Get the URL for a file in storage by its [StorageId](/api/modules/server#storageid).

The GET response includes a standard HTTP Digest header with a sha256 checksum.

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends `string` |

#### Parameters

| Name | Type | Description |
| :- | :- | :- |
| `storageId` | `T` extends \{ `__tableName`: `any`  } ? `never` : `T` | The [StorageId](/api/modules/server#storageid) of the file to fetch from Bijection storage. |

#### Returns

`Promise`\<`null` | `string`>

* A url which fetches the file via an HTTP GET, or `null` if it no longer exists.

***

### getMetadata

▸ **getMetadata**(`storageId`): `Promise`\<`null` | [`FileMetadata`](/api/modules/server#filemetadata)>

**`Deprecated`**

Use `ctx.db.system.get("_storage", storageId)` instead, which returns
equivalent metadata from the `_storage` system table (with a slightly different shape):

```typescript theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
const metadata = await ctx.db.system.get("_storage", storageId);
// { _id, _creationTime, sha256, size, contentType? }
```

Get metadata for a file.

#### Parameters

| Name | Type | Description |
| :- | :- | :- |
| `storageId` | [`GenericId`](/api/modules/values#genericid)\<`"_storage"`> | The `Id<"_storage">` of the file. |

#### Returns

`Promise`\<`null` | [`FileMetadata`](/api/modules/server#filemetadata)>

* A [FileMetadata](/api/modules/server#filemetadata) object if found or `null` if not found.

▸ **getMetadata**\<`T`>(`storageId`): `Promise`\<`null` | [`FileMetadata`](/api/modules/server#filemetadata)>

**`Deprecated`**

Use `ctx.db.system.get("_storage", storageId)` instead.

Get metadata for a file.

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends `string` |

#### Parameters

| Name | Type | Description |
| :- | :- | :- |
| `storageId` | `T` extends \{ `__tableName`: `any`  } ? `never` : `T` | The [StorageId](/api/modules/server#storageid) of the file. |

#### Returns

`Promise`\<`null` | [`FileMetadata`](/api/modules/server#filemetadata)>

* A [FileMetadata](/api/modules/server#filemetadata) object if found or `null` if not found.
