Files
App-Estoque-LiberiKids/SOLUCAO-ERRO-UPLOAD.md
2025-11-29 21:31:52 -03:00

4.4 KiB
Raw Blame History

🔧 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

  1. No Supabase, clique em SQL Editor (menu lateral esquerdo)
  2. Clique em "New Query"
  3. 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');
  1. Clique em "Run" ou pressione F5
  2. Aguarde a mensagem de sucesso

Passo 2: Testar

  1. Volte para o sistema (recarregue a página se necessário)
  2. Acesse Site / Catalogo
  3. Clique no botão "Fotos" de qualquer produto
  4. Clique em "Adicionar Nova Foto"
  5. Selecione uma imagem
  6. 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

  1. Pressione F12 no navegador
  2. Vá na aba Console
  3. Tente fazer upload novamente
  4. 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:

  1. Teste a Galeria no Site

    • Abra: http://localhost:5000/site/
    • Clique em um produto
    • Veja se as fotos extras aparecem
  2. Teste Exclusão de Fotos

    • Volte ao painel admin
    • Abra "Fotos" de um produto
    • Passe o mouse sobre uma foto
    • Clique no "×" vermelho
  3. Verificar Performance

    • As fotos carregam rápido?
    • A galeria funciona suavemente?

📝 Checklist

  • Bucket catalogo criado (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:

  1. Mensagem de erro do console do navegador (F12)
  2. Screenshot da aba "Policies" do bucket no Supabase