Skip to content

Uma abordagem sobre upload de imagens em APIs (principalmente no laravel 9+)

Duas formas bem comuns de serem usadas para enviar arquivos na web via API (Rest/Restfull) são -> Envio da Imagem por Base64 encoded (fica ENORME) o json e precisa ser performada decoded do lado do backend OU você terá um endpoint de post de imagens (abordagem mais comum) que te dá o PATH da imagem OU mesmo arquivo que acabou de subir. Imagine que temos um sistema de séries e filmes e você acabou de subir uma foto para capa dessa série com esse curl (ou postman da vida):

curl --location --request POST 'http://domíniodaaplicação.com.br/api/upload?path=series_cover' \
--header 'Cookie: XSRF-TOKEN=tokenFakeDoLaravelPoisNaoPrecisaDeCSRF' \
--form 'file=@"/C:/CaminhoDaMinhaImagem/minhaimagem.png"'

Pense em um cenário onde SERIES_COVER é o path de storage do laravel, a pasta onde as fotos ficam. Sendo assim, para essa request em específico você pode usar um outro Controller e gerenciar essa request que vai para upload chamando essa Controller e dentro dela coloque o código:

    public function upload(Request $request)
    {
        $path = $request->query('path');

        $coverPath = $request->hasFile('file')
            ? $request->file('file')->store($path, 'public')
            : '';

        $statusCode = $coverPath !== '' ? 200 : 500;
        return response()->json($coverPath, $statusCode);
    }

Com isso você receberá o path completo da imagem <3

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.