Objects: preview, download, share

Metadata from a HEAD, inline previews for images, JSON and text, a real download, and presigned links with an expiry you choose.

Tapping a file opens its object page.

Metadata

From a HEAD request: size, last modified, ETag, storage class — and the real Content-Type, as opposed to the guess a listing allows. (A subtlety worth knowing: the XML parser only drops a “folder marker” object when the requested prefix ends in /, otherwise an exact-key lookup for a zero-byte object would skip the object you asked for.)

Preview

  • Images render inline.
  • JSON opens in a collapsible, searchable tree, with a plain-text fallback when the document is truncated.
  • Other text is fetched size-capped with an unsigned Range header, and truncation is detected from the Content-Range response — so a 2 GB log file previews its first chunk instead of trying to download itself.

Download

A real download to the device’s Downloads or documents directory. On the web, where writing to a filesystem is not available, share links stand in.

Two ways, both presigned so the recipient needs no credentials:

  • Quick link — a one-hour presigned URL, copied straight from the row menu.
  • Advanced sheet — choose an expiry from 15 minutes up to S3’s 7-day maximum, and optionally force a download filename or content type. Both of those are baked into the signature as response-content-* overrides, so the link genuinely behaves that way rather than relying on the recipient’s browser to guess.

Sharing a log file with a colleague, from a phone, with a link that expires this afternoon, is the entire reason this screen exists.

Back to S3 & object storage.