Skip to content

Instantly share code, notes, and snippets.

@philipecampos
Created July 12, 2023 21:27
Show Gist options
  • Save philipecampos/b7ab64c5a8c4ddf2931f56d87b3160be to your computer and use it in GitHub Desktop.
Save philipecampos/b7ab64c5a8c4ddf2931f56d87b3160be to your computer and use it in GitHub Desktop.
Como fazer upload de arquivo usando Laravel

Upload e exibição de arquivos usando Laravel

Na view:

<form method="post" enctype="multipart/form-data">

<input type="file" name="foto" accept="image/*">

No controlador:

a linha abaixo retorna uma classe chamada UploadedFile (do laravel)

$arquivo = request('foto');

obtendo binário do arquivos enviado ao diretório temporário do linux

$binarioDoArquivo = file_get_contents($arquivo->path());

se precisar salvar o mime type do arquivo

$mimeTypeDoArquivo = mime_content_type($arquivo->path());

Salvando arquivo em uma tabela chamada "arquivos" no banco de dados Postgres

$arquivos = new Arquivos();
$arquivos->arquivo_binario  = DB::raw("decode('" . base64_encode($binarioDoArquivo) . "', 'base64')");
$arquivos->mime_type_arquivo = $mimeTypeDoArquivo;
$arquivos->save();

Exibindo arquivo na tela de edição

Como retornar um arquivo que está salvo no banco. O exemplo abaixo retorna como se fosse um pdf Criar o seguinte action no controlador:

public function show($id) {
	$arquivo = Arquivos::find($id);
	return response()->make(stream_get_contents($arquivo->arquivo_binario), 200, [
      'Content-Type' => 'application/pdf',//ou dinamicamente com $arquivo->mime_type_arquivo
  ]);
}

Rota para acessar um arquivo

no arquivo routes/web.php

Route::get('/arquivo/{id}', [\App\Http\Controllers\ControladorDeExemploController::class, 'show']);

Acessando arquivo usando uma url

http://localhost/arquivo/123

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment