joellytton
Posted on February 17, 2024
Neste tutorial, vamos explorar como salvar arquivos PDF no banco de dados PostgreSQL utilizando o framework Laravel. Esta abordagem pode ser útil em casos em que você deseja armazenar os arquivos diretamente no banco de dados em vez de no sistema de arquivos.
Passo 1: Configuração do Banco de Dados
Primeiramente, assegure-se de que você configurou corretamente o banco de dados PostgreSQL no arquivo .env do seu projeto Laravel. Certifique-se de que as credenciais e detalhes de conexão estejam corretos.
Passo 2: Migração do Banco de Dados
Em seguida, crie uma migração para a tabela onde os PDFs serão armazenados. Por exemplo, crie uma migração usando o comando:
php artisan make:migration create_uploads_table.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUploadsTable extends Migration
{
public function up(): void
{
Schema::create('uploads', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('mime');
$table->binary('data');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('uploads');
}
}
Em seguida, execute a migração usando o comando:
php artisan migrate
.
Passo 3: Implementação na Aplicação Laravel
Agora, vamos implementar a lógica para salvar e recuperar os PDFs na sua aplicação Laravel. Suponhamos que você tenha um controlador chamado PdfController.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Response;
class PdfController extends Controller
{
public function store(Request $request)
{
$name = $request->file('pdf_file')->getClientOriginalName();
$mime = $request->file('pdf_file')->getClientMimeType();
$data = base64_encode(file_get_contents($request->file('pdf_file')));
DB::table('uploads')->insert(['name' => $name, 'mime' => $mime, 'data' => $data]);
return redirect('/')->with('success', 'PDF enviado com sucesso.');
}
public function show(int $id)
{
$pdf = DB::table('uploads')->find($id);
if (!$pdf) {
abort(404);
}
$content = base64_decode($pdf->data);
$response = Response::make($content, 200);
$response->header('Content-Type', 'application/pdf');
return $response;
}
}
Passo 4: Rotas
Não se esqueça de definir as rotas adequadas para os métodos do controlador. Por exemplo:
Route::post('/pdf/store', [PdfController::class, 'store']);
Route::get('/pdf/{id}', [PdfController::class, 'show']);
Com isso, você criou as funcionalidades necessárias para salvar e recuperar PDFs no banco de dados PostgreSQL usando o Laravel. Lembre-se sempre de considerar as melhores práticas de segurança e desempenho ao lidar com o armazenamento de arquivos em um banco de dados.
Posted on February 17, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.