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