Read a file

A file that doesn’t exist, or that the Who may read rule hides, raises NotFoundError. They look the same on purpose, so a refusal never reveals which keys exist. To offer a download in a browser:

List files

Needs Who may list objects (or read, if unset).
listAll follows the cursor for you (on the async Python client use async for). Listing is by prefix, so design keys with that in mind (<user id>/<year>/file).

Build a folder view

Delete

Needs Who may delete objects.
There is no recycle bin. To allow undo, mark a record deleted instead and clean files up later (Files and records).

Moving and renaming

The client has no rename: upload under the new key, update your record, remove the old key. In Studio, Rename or move does it in one step (Browse files).

Caching

Files carry an ETag that changes when a file is replaced, so a browser can ask “has it changed?” cheaply. The bucket’s Browser cache (seconds) controls how long a browser reuses a file before asking. If you replace a file but keep its key, add a version to the address (?v=2) so every browser refetches at once, or better, use a new key.

Errors

Links and URLs

Public, signed and share links.

Patterns

Galleries, downloads, exports.