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 kelvinferraz
      Bom dia Pessoal,
       
      Estou com um problema que talvez muitos já devem ter passado, eu criei um FormRequest de um cadastro que fiz para validar os campos de anexo que vai para o BD. Incluindo a seguinte regra do name anexo_rg
        return [ 
                 'anexo_rg'           => 'mimes:jpeg,png,jpg,pdf|max:2048', 
              ];
       
      O campo não é required, porém ele fica pedindo para inserir um arquivo do tipo que foi criado na regra, ou seja, ele esta forçando um required no anexo, como consigo ignorar quando não possuir anexo?

      OBs: Eu criei um campo hidden para enviar um texto "NÃO POSSUI ANEXO". Antes de eu criar esse FormRequest ele conseguia deixar o anexo vazio, porém não tinha regras e a pessoa conseguia anexar qualquer tipo de arquivo.
       
    • By kelvinferraz
      Boa noite pessoal,
       
      Estou desenvolvendo uma aplicação e estou utilizando o método Auth do Laravel 5.8. Aparentemente esta tudo funcionando, acesso a certas áreas solicitam login. Eu gostaria de saber como faço para limitar o acesso de registro de usuários de um modo mais simples, pois andei pesquisando e existe formas de criar uma conta admin, mas para o meu propósito não teria necessidade de tanta complexidade, apenas gostaria de limitar o acesso ao http://localhost:8000/register para uma conta de e-mail especifica, ou mesmo se precisar criar um campo na tabela para validar se existe, não sei direito como fazer isso, estou aprendendo faz pouco tempo a respeito do Laravel.
       
      Exemplo de como esta funcionando minha app:
      http://localhost:8000/sistema === REQUER LOGIN PARA ACESSO
      http://localhost:8000/register == TAMBEM REQUER LOGIN, PORÉM QUALQUER USUÁRIO LOGADO FAZ REGISTRO DE NOVO USUÁRIO PARA ESSA ROTA EU GOSTARIA DE LIMITAR APENAS AO MEU EMAIL OU NOME DE USUÁRIO CADASTRADO.
       
       
       
       
      Obrigado!
    • By bobzznnn
      Bom, estou tirando uma cópia de um projeto antigo em laravel 5.2 e colocando para 5.8.
      No antigo mostrava meus indicados indiretos ao clicar na imagem e aparecer dentro de um popover de forma correta,
      já nesse fica aparecendo o <br> que é necessário colocar.
       

       
      Meu html tá bagunçado, mas é assim que funciona 100% no outro projeto 5.2
       
      @inject('usuarios', 'App\User') @foreach($usuarios->getIndicados() as $user) <thead class=" text-info"> <tr> <td> <center> <div class="font-size-sm text-muted">Result <span style="color:#00FF00"> <strong>{{$user->totalIndicadosAtivos()}}</strong></span>/{{$user->nIndicados()}}</div> <img data-placement="top" src="uploads/positivo.png" width="30" heigth="30" data-html="true" data-container="body" title="{{$user->nnIndicados()}}" data-toggle="popover" style="cursor:pointer;"></td> </center>  
      Meu Modelo:
       
      public function nnIndicados() { return implode('<br>', User::where('referrer_id', $this->id)->pluck('name')->all()); } Se eu remover o <br> os nomes listados aparecem tudo colados. Queria saber pq essa porcaria ficou aparecendo justamente agora que só faltava isso
    • By eduardaarosaa
      Ola!!!!
      Tenho essa função: 
       public function cadastro_info(Request $request)
          {
              $images=array();
              if($files=$request->file('images')){
                  foreach($files as $key => $file){
                      $name=$file->getClientOriginalName();
                      $extension = $file->getClientOriginalExtension();
                      $new = rand();
                      $file->move('image',$new.'.'.$extension);
                      $images[]=$new. '.' .$extension;
                      
                  }
                  }
              }
      Ela move 4 arquivos para a pasta image, estou tentando pegar um array com o nome das 4 imagens para adicionar no banco de dados, mas não tive sucesso ...
      Tentei pegar pela posição, mas ela só retorna a primeira imagem e quando tento colocar [1] por exemplo fiz dá esse erro: Use of undefined constant images - assumed 'images' (this will throw an Error in a future version of PHP). 
    • By bobzznnn
      Tenho um projecto em Laravel e gostaria de mudar a cor de um resultado "Ativo" ou "inativo" dentro de um html.
      Gostaria que fosse Active  e Inactive, como faria isso?
       

       
      Minha tabela "Ativo" está em "Tinyint"  marcada "0" para inativo e "1" para ativo.
       

       
      meu html:
      <div class="form-control"> <small id="emailHelp" class="form-text text-muted text-center">User: <i>{{Auth::user()->getStatus()}}</i></small> </div>  
×

Important Information

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