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

# Storage

> Store and retrieve blobs using Convex file storage.

## Reading

The `StorageReader` service is used to retrieve the URLs of blobs in storage.

```ts theme={null}
import * as Effect from "effect/Effect";
import { StorageReader } from "./confect/_generated/services";

Effect.gen(function* () {
  const reader = yield* StorageReader;

  return yield* reader.getUrl(storageId);
});
```

## Writing in mutations

The `StorageWriter` service is used to write blobs to storage in mutations.

```ts theme={null}
import * as Effect from "effect/Effect";
import { StorageWriter } from "./confect/_generated/services";

Effect.gen(function* () {
  const storage = yield* StorageWriter;

  // ...
});
```

### Methods

#### Generate an upload URL

```ts theme={null}
storage.generateUploadUrl();
```

#### Delete a blob

```ts theme={null}
storage.delete(storageId);
```

## Writing in actions

The `StorageActionWriter` service is used to read and write blobs to storage in actions.

```ts theme={null}
import * as Effect from "effect/Effect";
import { StorageActionWriter } from "./confect/_generated/services";

Effect.gen(function* () {
  const storage = yield* StorageActionWriter;

  // ...
});
```

### Methods

#### Get a blob

```ts theme={null}
storage.get(storageId);
```

#### Store a blob

```ts theme={null}
storage.store(blob, { sha256: optionalHash });
```
