<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: joellytton</title>
    <description>The latest articles on DEV Community by joellytton (@joellytton).</description>
    <link>https://dev.to/joellytton</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1005563%2F8feaa210-ab75-4bb6-91f8-7fa8738607f9.jpeg</url>
      <title>DEV Community: joellytton</title>
      <link>https://dev.to/joellytton</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joellytton"/>
    <language>en</language>
    <item>
      <title>Como Salvar um PDF no Banco de Dados PostgreSQL usando Laravel</title>
      <dc:creator>joellytton</dc:creator>
      <pubDate>Sat, 17 Feb 2024 01:46:26 +0000</pubDate>
      <link>https://dev.to/joellytton/como-salvar-um-pdf-no-banco-de-dados-postgresql-usando-laravel-4lnc</link>
      <guid>https://dev.to/joellytton/como-salvar-um-pdf-no-banco-de-dados-postgresql-usando-laravel-4lnc</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 1: Configuração do Banco de Dados&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 2: Migração do Banco de Dados&lt;/strong&gt;&lt;br&gt;
Em seguida, crie uma migração para a tabela onde os PDFs serão armazenados. Por exemplo, crie uma migração usando o comando:&lt;br&gt;
&lt;code&gt;php artisan make:migration create_uploads_table.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?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-&amp;gt;id();
            $table-&amp;gt;string('name');
            $table-&amp;gt;string('mime');
            $table-&amp;gt;binary('data');
            $table-&amp;gt;timestamps();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('uploads');
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em seguida, execute a migração usando o comando:&lt;br&gt;
&lt;code&gt;php artisan migrate&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 3: Implementação na Aplicação Laravel&lt;/strong&gt;&lt;br&gt;
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.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?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-&amp;gt;file('pdf_file')-&amp;gt;getClientOriginalName();
        $mime = $request-&amp;gt;file('pdf_file')-&amp;gt;getClientMimeType();
        $data = base64_encode(file_get_contents($request-&amp;gt;file('pdf_file')));

        DB::table('uploads')-&amp;gt;insert(['name' =&amp;gt; $name, 'mime' =&amp;gt; $mime, 'data' =&amp;gt; $data]);

        return redirect('/')-&amp;gt;with('success', 'PDF enviado com sucesso.');
    }

    public function show(int $id)
    {
        $pdf = DB::table('uploads')-&amp;gt;find($id);

        if (!$pdf) {
            abort(404);
        }

        $content = base64_decode($pdf-&amp;gt;data);

        $response = Response::make($content, 200);
        $response-&amp;gt;header('Content-Type', 'application/pdf');

        return $response;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Passo 4: Rotas&lt;/strong&gt;&lt;br&gt;
Não se esqueça de definir as rotas adequadas para os métodos do controlador. Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Route::post('/pdf/store', [PdfController::class, 'store']);
Route::get('/pdf/{id}', [PdfController::class, 'show']);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>laravel</category>
      <category>pdf</category>
    </item>
    <item>
      <title>Contêiner React usando Docker</title>
      <dc:creator>joellytton</dc:creator>
      <pubDate>Sat, 14 Jan 2023 04:23:59 +0000</pubDate>
      <link>https://dev.to/joellytton/conteiner-react-usando-docker-3f2d</link>
      <guid>https://dev.to/joellytton/conteiner-react-usando-docker-3f2d</guid>
      <description>&lt;p&gt;Estou iniciando meus estudos em react e a primeira coisa que  fiz foi configurar o ambiente de desenvolvimento. &lt;/p&gt;

&lt;p&gt;Mas configurar o ambiente de desenvolvimento às vezes é uma tarefa cansativa. Quem nunca teve problemas com versões incompatíveis? Muita coisa que pode dar errado.&lt;/p&gt;

&lt;p&gt;Por isso optei por utilizar o &lt;a href="https://www.docker.com/"&gt;docker&lt;/a&gt;. Antes de mais nada você precisa ter 3 coisas instaladas para finalizar esse tutorial com sucesso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Docker &lt;a href="https://docs.docker.com/engine/install/"&gt; Clique aqui para mais detalhes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Editor de código&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminal&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crie um diretório com o nome de sua preferencia, como estou fazendo um curso na &lt;a href="https://www.alura.com.br/"&gt;Alura&lt;/a&gt; vou criar com o nome do projeto que estou desenvolvendo. No caso, o diretório será: /home/sistemas/alura-books.&lt;/p&gt;

&lt;p&gt;Entre no diretório criado pelo terminal e execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --rm --volume "/home/sistemas/alura-books:/srv/alura-books" --workdir "/srv/alura-books" --publish 3000:3000 -it node:18.12.1 bash

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Segue uma breve explicação sobre os parâmetros deste comando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;--volume "/home/sistemas/alura-books:/srv/alura-books": Cria um link entre a pasta do computador hospedeiro (/home/sistemas/alura-books) com a pasta do contêiner (/srv/alura-books).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--workdir "/srv/alura-books": Diretório inicial quando o container for iniciado.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--publish 3000:3000: Cria um link entre a porta 3000 do contêiner com a porta 3000 do computador hospedeiro.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;-it: Cria um link entre o terminal do contêiner com o terminal do computador hospedeiro.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;-rm: Remove antigos contêineres (muito útil depois da primeira execução).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pronto agora você tem um contêiner temporário e pode executar comandos como o &lt;code&gt;npx create-react-app .&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Na primeira vez que você executar o docker run, o docker precisara baixar a imagem do &lt;a href="https://hub.docker.com/_/node"&gt;node:18.12.1&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Fique atento ao Owner da pasta /home/sistemas/alura-books no computador hospedeiro. No meu caso eu precisei alterar o Owner da pasta e seus arquivos, uma vez que eles foram criados por dentro do contêiner.&lt;/p&gt;

&lt;p&gt;Quem estiver usando Linux é só executar este comando no computador hospedeiro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown -R &amp;lt;USERNAME&amp;gt; /home/sistemas/alura-books
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muito obrigado pela sua atenção. Espero ter ajudado um pouco de alguma forma.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>react</category>
    </item>
  </channel>
</rss>
