Skip to content

A File Storage object built over R2.

License

edgefirst-dev/r2-file-storage

Repository files navigation

@edgefirst-dev/r2-file-storage

An implementation of @mjackson/file-storage that uses R2 as the storage backend.

Features

  • Simple, intuitive key/value API (like Web Storage, but for Files instead of strings)
  • A generic FileStorage class that works for various Cloudflare R2.
  • Preserves all File metadata including file.name, file.type, and file.lastModified

Installation

Install from npm or GitHub Package Registry with;

bun add @edgefirst-dev/r2-file-storage

Usage

import { R2FileStorage } from "@edgefirst-dev/r2-file-storage"; let storage = new R2FileStorage(r2); // Get r2 from your Cloudflare bindings let file = new File(["hello world"], "hello.txt", { type: "text/plain" }); let key = "hello-key"; // Set the file in storage. await storage.set(key, file); let file = await storage.put(key, file); // Then, sometime later... let fileFromStorage = await storage.get(key); // All of the original file's metadata is intact fileFromStorage.name; // 'hello.txt' fileFromStorage.type; // 'text/plain' // To remove from storage await storage.remove(key); await storage.list({ prefix: "hello" }); // List all files with keys starting with "hello"

License

See LICENSE

Author

Sponsor this project

 

Packages

 
 
 

Contributors 2

  •  
  •