Val Town comes with blob storage built-in. It allows for storing any data, like text, JSON, or images. You can access it via std/blob
.
Blob storage is scoped globally to your account. If you set a blob in one val, you can retrieve it by the same key in another val. It's backed by Cloudflare R2.
You may find this admin viewer helpful for viewing and editing your blobs.
import { blob } from "https://esm.town/v/std/blob";
let blobDemo = await blob.getJSON("myKey");
console.log(blobDemo); // returns `undefined` if not found
import { blob } from "https://esm.town/v/std/blob";
await blob.setJSON("myKey", { hello: "world" });
import { blob } from "https://esm.town/v/std/blob";
let allKeys = await blob.list();
console.log(allKeys);
const appKeys = await blob.list("app_");
console.log(appKeys); // all keys that begin with `app_`
blob.get
can throw ValTownBlobNotFoundError
ValTownBlobError
for unexpected errors.Our Blob SDK also includes some utility functions to make working with blobs easier.
import { blob } from "https://esm.town/v/std/blob";
await blob.copy("myKey", "myKeyCopy");
We provide access to the lower-level getter and setters, which are useful if you are storing non-JSON or binary data, need to stream in your response or request data, or do anything else lower-level.
async get(key: string)
: Retrieves a blob for a given key.async set(key: string, value: string | BodyInit)
: Sets the blob value for a given key. See BodyInit.