Jump to content
avelar.avelar

Upload de pdf na base64 - Laravel

Recommended Posts

Turma esta dando erro neste item em negritom, estou tentando , pegar um pdf que esta convertido em base64 e mandando ele gerar o arquivo e gravar numa pasta determinada com um nome, alguem poderias me ajudar? urgente.  Ovbrigado

 

 

TrablheController.php
 
public function post(Request $request)
    {

        $rules = [
            'nome' => 'required|string',
            'data_nascimento' => 'required|date',
            'email' => 'required|string',
            'cpf' => 'required|string',
            'curriculo' => ['required','mime:/application\/(?:docx||pdf\+xml);base64,.+/'],
        ];

 

        $validator = Validator::make(request()->json()->all(), $rules);

 

        if ($validator->fails()) {
            return response()->json($validator->errors()->toArray(), 422);
        }

 

        $vagas = Vagas::select('id')->firstOrFail();

 

        $data = $request->json()->all();

 

        $fileB64 = isset($data['curriculo']) ? $data['curriculo'] : false;


        unset($data['curriculo']);

 

        $trabalheconosco = new TrabalheConosco;

 

        foreach (array_keys($rules) as $key) {
            if (array_key_exists($key, $data)) {
                $trabalheconosco->{$key} = $data[$key];
            }
        }
        $trabalheconosco->save();

 

        if ($fileB64) {
            $trabalheconosco->curriculo = $this->saveFileB64($fileB64, 'images/curriculos', $trabalheconosco->id);
            $trabalheconosco->save();
        }

 

        $vagas->TrabalheConosco()->save($trabalheconosco);

 

        return response()->json(['data' => $trabalheconosco->toArray()], 201);
    }

 

Controller.php


    public function saveFileB64($fileB64, $path = '', $id = null): string
    {
        $chunkf = explode(';base64,', $fileB64, 2);
        $chunkf[0] = str_replace('data:', '', $chunkf[0]);

        if (!isset(self::MIMES[$chunkf[0]], $chunkf[1])) {
            return null;
        }

        $extension = self::MIMES[$chunkf[0]];

        $fileBin = base64_decode($chunkf[1]);

        $time = time();
        $pathName = null;

        do {
            $pathName = "$path/{$id}_{$time}_"
                . abs(crc32(uniqid('f', true))) . $extension;
        } while ($this->storage->exists($pathName));

        $this->storage->put(file_put_contents($pathName, $fileBin));

        return $pathName;
    }

 

ERROR NO INSOMNIA ( 500 INTERNAL SERVER ERROR)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Mauricio Molina
      Ola pessoal,
       
      Estou com probleminha, preciso gerar um PDF de alguns dados do BD, até consegui gerar o PDF (quando especifico o id), mas preciso que ao clicar no botão corresponde de uma lista de ordem de serviço, o PDF seja gerado de acordo com o ID da ordem de serviço.
       

       
      Botão:
      <a type="button" class="btn btn-sm btn-info" href="gerar_pdf.php?id=<?php echo $rows_cursos['id']; ?>" target="_blank" >PDF</a> Gerar PDF:
      <?php include ('pdf/mpdf.php'); include_once("../conexao/conexao.php"); //Criar a conexão $conn = mysqli_connect($servidor, $usuario, $senha, $dbname); if(!$conn){ die("Falha na conexao: " . mysqli_connect_error()); }else{ //echo "Conexao realizada com sucesso"; } $id = '17'; //***Aqui seria onde busca o ID da Ordem de Serviço*** $result_usuario = "SELECT * FROM ordem_servico WHERE id = '$id' LIMIT 1"; $resultado_usuario = mysqli_query($conn, $result_usuario); $row_usuario = mysqli_fetch_assoc($resultado_usuario); $pagina = "<html> <body> <h2>Ordem de Serviço Eletrobrastec</h2><p></p> <strong>Empresa:</strong> Eletrobrastec                                          <strong>Data:</strong> ".$row_usuario['date']."              <strong>Número OS:</strong> ".$row_usuario['id']." <p></p> <strong>Edereço:</strong> Rua Santo Agostinho, 860            <strong>Bairro:</strong> Caiçara        <strong>Cidade:</strong> Praia Grande       <strong>UF:</strong> SP <p></p> <strong>CNPJ:</strong> 288.880.270/0018-1         <strong>DD:</strong> 13         <strong>Telefone:</strong> 99757-6400 <hr> <h2>Dados do Cliente</h2> <p></p> <strong>Nome:</strong> ".$row_usuario['nome']."                                          <strong>Data Execução:</strong> _______________________ <p></p> <strong>DD:</strong> ".$row_usuario['dd']."                       <strong>Telefone:</strong> ".$row_usuario['telefone']."               <strong>E-mail:</strong> ".$row_usuario['email']." <p></p> <strong>CPF:</strong> ".$row_usuario['cpf']."               <strong>CNPJ:</strong> ".$row_usuario['cnpj']." <p></p> <strong>Aparelho:</strong> ".$row_usuario['aparelho']."                 <strong>Modelo:</strong> ".$row_usuario['modelo']."                  <strong>Defeito:</strong> ".$row_usuario['defeito']." <p></p> <strong>Taxa:</strong> _______________________                       <strong>Valor Total:</strong> ".$row_usuario['v_total']." <p></p> <strong>Descrição Serviço:</strong> ".$row_usuario['desc_servico']." <p></p><p></p><p></p><p></p><p></p><p></p><p></p> <strong>Observações:</strong> _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ <p></p><p></p><p></p><p></p> <label>*A taxa de visita apenas será cobrada caso o cliente não realize o serviço, caso não queira e posteriormente venha realizar, a mesma será descontada.<label> </body> </html> "; $arquivo = "ordemservico.pdf"; $mpdf = new mPDF(); $mpdf->WriteHTML($pagina); $mpdf->Output($arquivo, 'I'); // I - Abre no navegador // F - Salva o arquivo no servido // D - Salva o arquivo no computador do usuário ?> Neste caso percebem que esta sendo gerado um PDF com a ordem de serviço de ID 17, tudo correto, porem gostaria que neste item, fosse gerado de acordo com o botão clicado.
       
      $id = '17'; //***Aqui seria onde busca o ID da Ordem de Serviço*** $result_usuario = "SELECT * FROM ordem_servico WHERE id = '$id' LIMIT 1"; $resultado_usuario = mysqli_query($conn, $result_usuario); $row_usuario = mysqli_fetch_assoc($resultado_usuario);  
      Alguém pra dar uma força?
       
      Obrigado!
       
       
    • By terra
      Olá todos,
       
      Não consigo enviar e-mail com repley-to
       
      assim funciona:
       
      assim não funciona:
       
       
       
      Essa é função que envia email:
       
       
      Obrigado
      Toninho
    • By Kefatif
      Prezados, bom dia.
       
      Tenho uns um sistema com uns relatórios em PDF na pasta do meu domínio onde chamo pelo comando abaixo:

                 
      <div class="row">             <div class="col-md-4 img-portfolio">                 <a href="relatorios/teste.pdf" target="_blank">                 <img class="img-responsive img-hover" src="../img/jan-700x400.jpg" alt=""></a><h3>                 <center><a href="relatorios-teste/relatorios-producao.php">Janeiro/2021</a></center></h3>             </div>  
      Mas se uma pessoa acessar o PDF, copiar o link e enviar para uma outra pessoa que não tem acesso ao sistema, essa pessoa não autorizada terá acesso a esses relatórios, existe alguma forma para restringir esse acesso?
       
      Uso a autenticação da seguinte forma.
       
      Arquivo "Autenticação":
       
      <?php session_start(); //se não(!) existir a sessao login if(!isset($_SESSION["nome"])){ session_destroy(); $msg = "Acesso negado!"; header("location:../login.php?msg=".$msg); }elseif( $_SESSION["perfil"] != 'relatorios' ){ $msg = "Acesso negado!"; header("location:../painel.php?msg=".$msg); } ?>  
       
      Agradeço a todos desde já.
    • By mkboy
      Olá,
       
      Ví que tem o Forum de PHP.
       
      Dúvidas de Laravel, posso perguntar nele, ou há um específico?
    • By Diego Tolentino
      Fala Galera!! procuro uma solução a tempos para um leitor de pdf que leia pdf com mídias (no meu caso vídeos).
       
      Tenho um ebook em pdf que preciso disponibilizá-lo online, porém esse pdf contem um vídeo e não roda apenas com os navegadores normais. 
       
      A solução não poderia ser através de plugin ou apps, pois preciso que as pessoas que acessarem esse ebook abram sem maiores dificuldades.
       
      Eu já uso um leitor em javaScript, o PDF.js mas ele não lê o video
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.