Contenido del curso
Creación del proyecto
Planificación y mantenimiento
- 8

Planificación de rutas REST en Laravel
06:08 min - 9

Recursos y colecciones en Laravel API
12:59 min - 10

Recursos anidados en Laravel API
11:48 min - 11

Cómo reducir 932 consultas con Telescope
10:54 min - 12

CRUD de Recetas con Laravel y Symfony en Visual Studio Code
16:21 min - 13

Validación de Datos en Aplicaciones Web con Laravel
11:24 min
Funciones de seguridad
- 14

Autenticación vs. autorización
03:19 min - 15

Proteger rutas de API con Sanctum
09:27 min - 16

Ruta de login y tokens con Sanctum
12:32 min - 17

Corrección de bugs de seguridad en aplicaciones web
08:02 min - 18

Políticas de acceso en Laravel con Artisan
07:27 min - 19

Upload e validação de imagens em Laravel
Viendo ahora - 20

Qué es autenticación en la web
03:54 min
API Testing
API Breaking Changes
Conclusiones
Upload e validação de imagens em Laravel
Resumen
Carregar imagens em uma API Laravel exige mais do que um simples campo de texto: precisa de tratamento de ficheiros, armazenamento organizado e validação de formato. Vais aprender como permitir upload de imagens no controlador de receitas, guardá las numa pasta pública e bloquear ficheiros que não cumpram o formato esperado.
Este fluxo é útil para qualquer programador que esteja a construir um CRUD com Laravel e queira adicionar uma camada extra de segurança ao processo administrativo.
Como permitir o upload de uma imagem no controlador?
O ponto de partida está no método de criação do recurso. Em vez de tratar a imagem como texto, tens de a tratar como ficheiro através da classe Request, que gere todo o pedido enviado pelo cliente.
No controlador, dentro do método que cria a receita, usas o método file para apanhar o campo de imagem e o método store para guardar o ficheiro numa pasta organizada. A estrutura básica fica assim:
php $receita->imagem = $request->file('imagem')->store('receitas', 'public'); $receita->update();
A pasta receitas será criada automaticamente dentro de app/public, que é onde o Laravel armazena ficheiros acessíveis publicamente. O método update garante que a alteração no registo é persistida.
Onde o Laravel guarda imagens com store? Por defeito, o método store coloca o ficheiro em storage/app/public dentro da subpasta que indicas. No exemplo, fica em storage/app/public/receitas.
Como testar o upload no Postman?
Para validar o endpoint, usas o Postman com uma requisição POST já autenticada. O detalhe importante está no campo da imagem: por defeito, o Postman aceita texto, mas precisas de mudar o tipo do campo.
- Posiciona te sobre o campo imagem no body do tipo form data.
- Clica no ícone que aparece e troca text por file.
- Seleciona o ficheiro do teu computador e clica em open.
- Envia a requisição e confirma que a rota da imagem é devolvida no resultado.
Depois de enviar, vais ver no projeto que a pasta foi criada e a imagem foi armazenada com um nome único gerado pelo Laravel [03:15].
Como validar que o ficheiro é uma imagem?
Aqui entra a camada de segurança. Sem validação, qualquer utilizador pode tentar carregar ficheiros que não são imagens, o que abre brechas no teu sistema. A solução está nas regras de validação dentro da classe Request.
No ficheiro de Request associado ao recurso, adicionas as regras ao campo imagem. A regra required obriga o envio e a regra image garante que o ficheiro é uma imagem válida. Podes ainda restringir formatos específicos:
php 'imagem' => 'required|image|mimes:png,jpg'
Se tentares enviar um PNG quando a regra exige apenas JPG, o Laravel devolve imediatamente um erro a indicar que o formato não é aceite. Ao corrigir para PNG ou ajustar a regra, o registo é criado com sucesso.
O que faz a regra image no Laravel? Verifica se o ficheiro carregado tem uma extensão válida de imagem como jpg, png, bmp, gif, svg ou webp. É a forma mais rápida de filtrar uploads inválidos.
Na documentação oficial do Laravel, na secção de Validation, encontras a lista completa de regras disponíveis. Vale a pena explorar a regra max para limitar o peso do ficheiro e a regra size para controlar dimensões, ambas muito úteis quando trabalhas diretamente com ficheiros [05:20].
Como atualizar uma receita com imagem opcional?
A atualização tem uma lógica diferente da criação. Ao atualizar, não queres obrigar o utilizador a enviar sempre uma imagem nova; ele pode querer alterar apenas o título ou outro campo.
A solução passa por uma verificação condicional dentro do método update do controlador. Perguntas se o pedido inclui um ficheiro e, só nesse caso, executas o upload:
php if ($request->file('imagem')) { $receita->imagem = $request->file('imagem')->store('receitas', 'public'); } $receita->update();
Desta forma, a imagem só é substituída quando o utilizador realmente envia uma nova. Os restantes campos são atualizados normalmente, sem forçar uploads desnecessários.
Como testar a atualização no Postman?
Para testar este endpoint precisas de estar autenticado com um token válido. O truque está em manter o método POST mas adicionar um campo extra que indique ao Laravel que se trata de uma atualização.
- Mantém a requisição como POST com o ID do recurso na URL, por exemplo /receitas/107.
- Adiciona um campo chamado _method com o valor put.
- Envia os campos que queres atualizar, como o título.
- Confirma na resposta que o registo foi modificado.
Este padrão é necessário porque o form data com ficheiros não suporta nativamente o método PUT. O Laravel reconhece o campo _method e processa a requisição como atualização [07:45].
Faz este exercício no teu projeto, testa com diferentes formatos de imagem e partilha nos comentários que regras de validação adicionais aplicaste ao teu sistema.