← Dynamic content

Content.uri

luastra/content
Content.uri(value: Image): string

Returns the opaque host-neutral handle carried by a Content.Image without resolving it to a provider or filesystem location.

Before you use it

Add luastra/content to this module's dependencies in luastra.json, then import it with require("luastra/content"). Declare content.pick for browser selection and content.upload for transfer. Upload requires a server-created intent from an authenticated declared backend function. Application code must never construct a provider URL, file path, data URL, blob URL, bucket path, or upload handle.

How it fits

Image construction and decoders are synchronous. Selection, release, upload, and cancellation return request IDs and complete through application/app resolve; progress enters application/app handle as content_progress.

When to use it

Use Content.uri only at an SDK boundary that still expects the canonical handle string. Prefer passing Content.Image directly to UI.Image so its image kind and metadata remain checked.

Parameters

ParameterType / valuesDescription
valueImageTyped Content.Image whose opaque host-neutral handle is required.

Returns

string — the validated canonical string produced by this operation.

What happens next

A bounded image lifecycle that keeps local files and provider credentials outside Luau while reusing UI.Image.

Failures and fixes

Cancellation, malformed or expired handles, unsupported media types, excessive bytes or dimensions, offline transfer, authorization denial, and decode failure remain explicit branches. Release previews, request fresh display grants after UI.Image.onError, and never persist or log upload/content handles.

Availability

Private source foundation after 0.5.0-alpha; browser PNG/JPEG selection and upload are automated, while camera and native picker certification remain later evidence gates.

Focused example

local Content = require("luastra/content")
local handle = Content.uri(cover)

Continue learning

Prerequisites

Content.Image

Complete inventory

View all pages in Dynamic content
← Previous: Content.imageNext: Content.pickImage →