FileStorage

View Source

Summary

A key/value interface for storing File objects.

Signature

interface FileStorage {
  get(key: string): File | Promise<File | null> | null;
  has(key: string): boolean | Promise<boolean>;
  list<T extends ListOptions>(
    options: T,
  ): ListResult<T> | Promise<ListResult<T>>;
  put(key: string, file: File): File | Promise<File>;
  remove(key: string): void | Promise<void>;
  set(key: string, file: File): void | Promise<void>;
}

Methods

get(key: string): File | Promise<File | null> | null

Get a File at the given key.

key

The key to look up

has(key: string): boolean | Promise

Check if a file with the given key exists.

key

The key to look up

list(options: T): ListResult | Promise<ListResult>

List the files in storage.

The following options are available:

  • cursor: An opaque string that allows you to paginate over the keys in storage
  • includeMetadata: If true, include file metadata in the result
  • limit: The maximum number of files to return
  • prefix: Only return keys that start with this string

For example, to list all files under keys that start with user123/:

let result = await storage.list({ prefix: 'user123/' });
console.log(result.files);
// [
//   { key: "user123/..." },
//   { key: "user123/..." },
//   ...
// ]

result.files will be an array of { key: string } objects. To include metadata about each file, use includeMetadata: true.

let result = await storage.list({ prefix: 'user123/', includeMetadata: true });
console.log(result.files);
// [
//   {
//     key: "user123/...",
//     lastModified: 1737955705270,
//     name: "hello.txt",
//     size: 16,
//     type: "text/plain"
//   },
//   ...
// ]

Pagination is done via an opaque cursor property in the list result object. If it is not undefined, there are more files to list. You can list them by passing the cursor back in the options object on the next call.

let result = await storage.list();

console.log(result.files);

if (result.cursor !== undefined) {
  let result2 = await storage.list({ cursor: result.cursor });
}

Use the limit option to limit how many results you get back in the files array.

options

Options for the list operation

put(key: string, file: File): File | Promise

Put a File in storage and return a new file backed by this storage.

key

The key to store the file under

file

The file to store

remove(key: string): void | Promise

Remove the file with the given key from storage.

key

The key to remove

set(key: string, file: File): void | Promise

Put a File in storage at the given key.

key

The key to store the file under

file

The file to store