10.7 - Guardando Tesouros - Storage
E aí, caçador(a) de tesouros digitais! Já aprendemos a guardar informações estruturadas — tipo texto, números e datas — nas nossas tabelas, e a controlar quem vê o quê usando Auth e RLS. Mas e aquela outra galera de arquivos que deixa a web tão interessante? Fotos de perfil, memes, vídeos, áudios, PDFs… onde será que a gente armazena esses arquivos?
A resposta simples é: não no banco de dados! Guardar arquivos grandes diretamente lá pode deixar tudo lento e pesado. Para isso, precisamos de um espaço próprio, um cofre digital para esses “tesouros” maiores e mais variados. E é aí que o Supabase Storage entra em ação, trazendo mais um superpoder pro nosso QG!
A Missão: Um Cofre Seguro para Seus Arquivos
O Supabase Storage é um espaço gigantesco e seguro, feito sob medida para guardar qualquer tipo de arquivo, integrado ao seu projeto Supabase, quase como um Google Drive ou Dropbox próprio para você.
Ele serve para armazenar:
Imagens: Fotos de perfil, banners, memes...
Vídeos: Clipes, tutoriais...
Áudios: Podcasts, músicas, gravações...
Documentos: PDFs, planilhas, textos...
E tudo mais que seu app precisar guardar!
Por que usar Storage e não o banco?
Desempenho: Bancos de dados são melhores para dados organizados, não para arquivos grandes.
Escalabilidade: Serviços de storage são projetados para armazenar e entregar milhões de arquivos de forma rápida e eficiente.
Custo: Armazenar arquivos em storage costuma ser mais barato do que manter tudo no banco de dados.
Entrega rápida: O Supabase Storage usa CDN para entregar arquivos rapidinho em qualquer lugar do mundo.
Como Funciona o Supabase Storage (Resumo)
O Storage é organizado em Buckets — pense neles como pastas ou cofres dentro do seu Storage.
Buckets: Crie buckets para organizar seus arquivos, por exemplo:
avatares
,imagens_posts
,documentos
.Arquivos (Objetos): Dentro do bucket ficam os arquivos, chamados de objetos, cada um com um nome único (pode ter subpastas, tipo
usuario123/foto.jpg
).Políticas de Acesso: Como o RLS nas tabelas, o Storage tem suas políticas para controlar quem pode ler, enviar, apagar arquivos e até listar o conteúdo.
API de Storage: Você interage com o Storage usando a API do Supabase — funções para upload, download, obter URLs públicas e mais.
Explorando o Storage no Painel Supabase
No painel do seu projeto, clique em Storage (ícone de caixa 🗄️).
Clique em New Bucket para criar uma nova pasta.
Dê um nome único (ex:
fotos-perfil
).Defina se o bucket será público ou não (se for público, qualquer pessoa com o link pode acessar os arquivos, então cuidado!).
Dentro do bucket, você pode enviar arquivos direto pelo painel com "Upload file".
Na aba Policies, você configura quem pode fazer o quê (leitura, escrita, exclusão) para cada bucket, usando regras similares ao RLS.
Na Prática: Guardando Fotos de Perfil
Vamos imaginar que seu app precisa guardar as fotos de perfil dos usuários.
Crie um bucket chamado
avatares
e deixe ele privado.Configure as políticas:
Usuários autenticados podem ler os avatares.
Usuários autenticados podem fazer upload apenas de arquivos com nomes que comecem com seu
auth.uid()
(ex:uid123/foto.png
).Usuários podem apagar seus próprios arquivos (verificando que o nome do arquivo começa com o próprio UID).
Na sua tabela
usuarios
, crie uma coluna para guardar o caminho do arquivo do avatar, tipocaminho_avatar
.No seu código:
Ao enviar a foto, faça o upload com
supabase.storage.from('avatares').upload(...)
, nomeando o arquivo com o UID do usuário.Salve o caminho retornado no banco na coluna
caminho_avatar
.Para mostrar a imagem, pegue esse caminho e use
getPublicUrl()
oucreateSignedUrl()
para obter o link e exibir no frontend.
Com isso, seu QG Supabase tem um lugar especial e seguro para guardar todos os seus tesouros digitais, mantendo o banco de dados leve e rápido.
Last updated