new·The score now tells you which way it movedA brain's exam only ever grows: its own material writes questions, and so does every question a real caller asked and did not get answered. The score is a percentage over that growing set, so a brain that learned more could post a smaller number — and this week three did. One of them answered two MORE questions than the week before and showed eighteen points less. Printed as a single percentage, that reads as decline to a reader and as punishment to anyone who contributes material.all news →
mozg.beta
Sign in

Supabase · Storage · all subjects

storage/downloads

15 notes, read out of this brain and free to use. Each one was extracted from a source and is re-checked against its exam.

Download files from Dashboard Storage interface

You can download individual files directly from the Storage > Files section of the Dashboard by browsing to your bucket and selecting files.

Download files using Supabase CLI storage commands

The Supabase CLI provides storage commands to list and copy objects from your linked project. The CLI reference documentation contains the available commands for storage operations.

S3-compatible endpoint for file downloads and browsing

Supabase Storage exposes an S3-compatible endpoint, allowing you to use tools like Cyberduck, AWS CLI, or rclone to browse and download files. To connect, enable S3 protocol in Storage > Configuration > S3 section of the Dashboard and generate an access key and secret key pair.

S3 access key generation is shown once

When generating an access key and secret key pair for S3-compatible access in the Dashboard, the credentials are shown only once. You must save them immediately or they cannot be retrieved again.

Performance advantage of S3-compatible tools for bulk downloads

For downloading a large number of objects, using an S3-compatible tool like rclone or Cyberduck is significantly more efficient than downloading files individually.

Migration scripts for bulk downloads and project migrations

For bulk downloads or project migrations, Supabase provides Node.js scripts and Google Colab scripts in the migration guides to download and migrate storage objects between projects.

S3 HeadObject implementation details

HeadObject is implemented with support for conditional operations: If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, and Range (which has no effect in HeadObject). Not supported: partNumber, SSE-C headers (x-amz-server-side-encryption-customer-algorithm, x-amz-server-side-encryption-customer-key, x-amz-server-side-encryption-customer-key-MD5), Request Payer (x-amz-request-payer), Bucket Owner (x-amz-expected-bucket-owner).

S3 GetObject implementation details

GetObject is implemented with support for conditional operations: If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, and Range with PartNumber support. Not supported: SSE-C headers (x-amz-server-side-encryption-customer-algorithm, x-amz-server-side-encryption-customer-key, x-amz-server-side-encryption-customer-key-MD5), Request Payer (x-amz-request-payer), Bucket Owner (x-amz-expected-bucket-owner).

Public bucket URL format

Files in public buckets are publicly accessible and have high CDN cache HIT ratio. Access them using the URL format: https://[project_id].supabase.co/storage/v1/object/public/[bucket]/[asset-name]

getPublicUrl SDK method

The Supabase SDK provides a getPublicUrl method to generate public URLs. Example: const { data } = supabase.storage.from('bucket').getPublicUrl('filePath.jpg') returns data.publicUrl

Download query parameter for automatic downloads

Add the ?download query string parameter to a public file URL to trigger automatic download in the browser instead of serving it. By default it uses the asset name to save the file. You can pass a custom name with ?download=customname.jpg

SDK download method with query parameters

The SDK's download() method accepts query parameters to customize download behavior. In JavaScript: await supabase.storage.from('avatars').download('avatar1.png', { download: 'my-custom-name.png' }). Dart and Swift SDKs pass these as queryParams and queryItems respectively.

Private bucket access requirements

Files in private (non-public) buckets are not accessible via public URLs. Access requires either: (1) a time-limited signed URL created on the server, or (2) a GET request to https://[project_id].supabase.co/storage/v1/object/authenticated/[bucket]/[asset-name] with the user's Authorization header

Signed URLs use separate internal key

Storage signed URLs are signed with a dedicated internal key separate from the project's Auth JWT signing key. Signed URLs remain valid until expiry regardless of Auth JWT key rotation, revocation, legacy key disabling, or signing algorithm changes (HS256 to ES256). To revoke signed URLs, contact Supabase support.

createSignedUrl method

Create a time-limited URL to share with users using createSignedUrl. Example: const { data, error } = await supabase.storage.from('bucket').createSignedUrl('private-document.pdf', 3600) returns data.signedUrl. The second parameter is the expiry time in seconds.

Give your agent this brain