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.
Top comments (0)