4.4 KiB
4.4 KiB
🔧 Solução: Erro ao Adicionar Fotos
✅ Bucket Criado com Sucesso!
Vejo na imagem que o bucket catalogo foi criado e está marcado como Public. Perfeito! 👍
❌ O Problema
Faltam as políticas de segurança (RLS) que permitem upload, update e delete.
🚀 Solução Rápida (2 minutos)
Passo 1: Executar SQL
- No Supabase, clique em SQL Editor (menu lateral esquerdo)
- Clique em "New Query"
- Cole o código abaixo:
-- Remover políticas antigas se existirem
DROP POLICY IF EXISTS "Permitir leitura pública catalogo" ON storage.objects;
DROP POLICY IF EXISTS "Permitir upload catalogo" ON storage.objects;
DROP POLICY IF EXISTS "Permitir update catalogo" ON storage.objects;
DROP POLICY IF EXISTS "Permitir delete catalogo" ON storage.objects;
-- 1. Leitura pública
CREATE POLICY "Permitir leitura pública catalogo"
ON storage.objects FOR SELECT
USING (bucket_id = 'catalogo');
-- 2. Upload
CREATE POLICY "Permitir upload catalogo"
ON storage.objects FOR INSERT
WITH CHECK (bucket_id = 'catalogo');
-- 3. Update
CREATE POLICY "Permitir update catalogo"
ON storage.objects FOR UPDATE
USING (bucket_id = 'catalogo');
-- 4. Delete
CREATE POLICY "Permitir delete catalogo"
ON storage.objects FOR DELETE
USING (bucket_id = 'catalogo');
- Clique em "Run" ou pressione F5
- Aguarde a mensagem de sucesso
Passo 2: Testar
- Volte para o sistema (recarregue a página se necessário)
- Acesse Site / Catalogo
- Clique no botão "Fotos" de qualquer produto
- Clique em "Adicionar Nova Foto"
- Selecione uma imagem
- Deve funcionar! ✅
🔍 Como Verificar se as Políticas Foram Criadas
Execute este SQL para verificar:
SELECT
policyname,
cmd as "Comando",
CASE
WHEN cmd = 'SELECT' THEN 'Leitura'
WHEN cmd = 'INSERT' THEN 'Upload'
WHEN cmd = 'UPDATE' THEN 'Atualização'
WHEN cmd = 'DELETE' THEN 'Exclusão'
END as "Tipo"
FROM pg_policies
WHERE tablename = 'objects'
AND schemaname = 'storage'
AND policyname LIKE '%catalogo%'
ORDER BY policyname;
Resultado esperado: 4 políticas (SELECT, INSERT, UPDATE, DELETE)
🐛 Se Ainda Não Funcionar
1. Verifique o Console do Navegador
- Pressione F12 no navegador
- Vá na aba Console
- Tente fazer upload novamente
- Veja a mensagem de erro
2. Mensagens de Erro Comuns
"new row violates row-level security policy"
- Causa: Políticas RLS não foram criadas
- Solução: Execute o SQL acima novamente
"Payload too large"
- Causa: Arquivo maior que 5MB
- Solução: Use uma imagem menor
"Invalid file type"
- Causa: Tipo de arquivo não permitido
- Solução: Use apenas JPEG, PNG, WebP ou GIF
"Network error" ou "Failed to fetch"
- Causa: Servidor offline
- Solução: Verifique se o servidor está rodando
3. Verificar Servidor
No terminal, veja se há erros:
# Verificar se está rodando
curl http://localhost:5000/api/produtos
# Ver logs em tempo real
tail -f logs/*.log
📊 Estrutura Esperada
Depois do upload bem-sucedido, você verá no Supabase Storage:
catalogo/
└── produto_{id}/
├── 1729765432123-foto1.jpg
├── 1729765433456-foto2.png
└── 1729765434789-foto3.webp
✅ Melhorias Implementadas
Atualizei o código para:
- ✅ Validar tipo de arquivo (JPEG, PNG, WebP, GIF)
- ✅ Validar tamanho (máx 5MB)
- ✅ Mostrar mensagem de erro específica
- ✅ Limpar input após upload
- ✅ Logs detalhados no console
🎯 Próximos Passos
Depois que funcionar:
-
Teste a Galeria no Site
- Abra:
http://localhost:5000/site/ - Clique em um produto
- Veja se as fotos extras aparecem
- Abra:
-
Teste Exclusão de Fotos
- Volte ao painel admin
- Abra "Fotos" de um produto
- Passe o mouse sobre uma foto
- Clique no "×" vermelho
-
Verificar Performance
- As fotos carregam rápido?
- A galeria funciona suavemente?
📝 Checklist
- Bucket
catalogocriado ✅ (você já fez!) - Bucket marcado como Public ✅ (você já fez!)
- Executar SQL das políticas RLS
- Testar upload de foto
- Ver foto no Storage do Supabase
- Ver foto na galeria do site
Após executar o SQL das políticas, deve funcionar perfeitamente! 🚀
Se ainda tiver problemas, compartilhe:
- Mensagem de erro do console do navegador (F12)
- Screenshot da aba "Policies" do bucket no Supabase