Pular para o conteúdo
📦 SUPERDB STORAGE

Arquivos com
transformação de imagem.

Upload de qualquer tipo, até 50 MB por arquivo, links assinados com prazo, transformação de imagem pela URL e buckets públicos ou privados. Com os métodos de storage do supabase-js.

O storage que seu time vai usar todo dia.

Buckets, arquivos, links assinados e transformação de imagem — em português, no painel do SuperDB.

app.superdb.com.br/projects/loja/storage/anexos
TipoNomeTamanhoModificado—
🖼️avatar-maria.png248 KBhá 2 min···
📄contrato-2025-001.pdf1.4 MBhá 18 min···
🎬video-tutorial.mp442.1 MBhá 1h···
📸foto-produto-tenis-azul.jpg2.4 MBhá 3h···
🧾comprovante-pix-3821.pdf87 KBontem···
🖼️banner-promo-natal.webp198 KBontem···
📄manual-cliente-v3.pdf3.8 MB2 dias···
📐planta-baixa-galpao.svg312 KB3 dias···
app.superdb.com.br/projects/loja/storage
BucketVisibilidadeLimiteArquivos
proj_loja_anexosprivado50 MB14.142
proj_loja_fotospúblico5 MB8.400
proj_loja_contratosprivado20 MB312
proj_loja_recibosprivado10 MB4.200
storage.superdb.com.br/render/image/public/proj_loja_fotos/tenis-azul.jpg
OriginalJPEG
📸
foto-produto-tenis-azul.jpg 1920 × 1920 · 2.4 MB
TransformadoWebP
📸
200 × 200, cover WebP · 18 KB
/render/image/public/proj_loja_fotos/tenis-azul.jpg?width=200&height=200&resize=cover&quality=80
ParâmetroExemploO que faz
width / height200largura e altura em pixels
resizecovercover, contain ou fill
quality80de 20 a 100

O que tem dentro.

O que você usa para guardar e servir os arquivos do seu app.

📤

Upload até 50 MB

Cada arquivo vai até 50 MB, e cada bucket pode ter um limite menor. Pelo painel ou pelo SDK, com upsert para substituir o arquivo que já existe.

🪄

Transformação de imagem

Largura, altura, recorte (cover, contain ou fill) e qualidade, direto na URL de um bucket público. Sai em WebP quando o navegador aceita.

🔗

Links assinados

createSignedUrl com o prazo em segundos: quem tem o link baixa o arquivo até ele vencer, e o bucket continua privado.

🛡️

Público ou privado

Em bucket público, qualquer um com a URL lê. Em bucket privado, a chave pública não abre nada: só link assinado ou um usuário logado do projeto — qualquer um deles, porque ainda não há pasta por usuário.

📋

Isolado por projeto

Um projeto nunca alcança os buckets de outro. Enviar, apagar e criar bucket exigem a chave de servidor ou um usuário logado; a chave pública só lê o que é público.

🎬

Vídeo e áudio por partes

O servidor responde a pedidos de intervalo (HTTP 206): o <video> do HTML começa a tocar e pula para o meio sem baixar o arquivo inteiro.

🗂️

Buckets

Crie os buckets que precisar, pelo painel ou pela API. O nome real é proj_<projeto>_<nome>, o mesmo que aparece no painel, e é ele que vai no código.

🔌

Métodos do supabase-js

storage.from(bucket) com upload, download, list, remove, getPublicUrl e createSignedUrl, com os mesmos nomes.

🇧🇷

Arquivos no Brasil

Os arquivos ficam no disco do servidor em São Paulo, junto do banco. A cópia de segurança vai para fora do servidor já cifrada.

📊

Arquivos e tráfego por plano

Grátis: 1 GB de arquivos e 10 GB de tráfego. Site: 25 GB de arquivos e 500 GB de tráfego. Pro: 100 GB de arquivos e 2 TB de tráfego. Escala: 400 GB de arquivos e 5 TB de tráfego.

⚡ VINDO DO SUPABASE

Os métodos de storage
do supabase-js.

O db.storage do @superdb/client tem os métodos do @supabase/supabase-js: from(bucket).upload(), download, list, remove, getPublicUrl e createSignedUrl.

Você troca o import; os arquivos que já estão no Supabase entram pelo passo de storage do guia de migração.

import { createClient } from '@superdb/client'
const db = createClient(url, anonKey, { project: 'loja' })

// O bucket se chama proj_<projeto>_<nome>, como aparece no painel
const { data } = await db.storage
  .from('proj_loja_avatares')
  .upload(`${userId}/avatar.png`, file, { upsert: true })

// URL pública e miniatura de 200 × 200
const { data: { publicUrl } } = db.storage
  .from('proj_loja_avatares')
  .getPublicUrl(`${userId}/avatar.png`)

const thumb = publicUrl.replace('/object/', '/render/image/')
  + '?width=200&height=200&resize=cover&quality=80'

// Link assinado de 1 hora para um PDF privado
const { data: signed } = await db.storage
  .from('proj_loja_contratos')
  .createSignedUrl('contrato-001.pdf', 3600)
🇧🇷 BRASIL-FIRST

Storage para app brasileiro.

📋 Documento privado

Contrato e comprovante em bucket privado não abrem com a chave pública nem com uma URL sem assinatura. Mas qualquer usuário logado do projeto lê o bucket inteiro: não guarde nele o que um usuário do seu app não pode ver de outro.

💸 Cobrança em real

Fatura em R$: cartão no mensal; PIX, boleto ou cartão no anual. Sem dólar e sem IOF.

💬 Painel e suporte em PT-BR

Painel inteiro em português, com erros e dicas em PT-BR. Suporte humano por chamado, em horário comercial do Brasil.

Pronto pra subir os primeiros arquivos?

No plano Grátis: 1 GB de arquivos e 10 GB de tráfego. Sem cartão.