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 marcossantana10
      Opa, to precisando muito de uma ajuda: estou tentando fazer o upload de arquivos de um app hibrido (rodando android) para um servidor. O código abaixo é executado sem erro, mas o upload não acontece. Será que alguem tem ideia de onde pode estar o erro?
       
      var images = []; var $imagesDiv; document.addEventListener("deviceready", init, false); function init() { $("#addPicture").on("touchend", selPic); $imagesDiv = $("#images"); $("#uploadPictures").on("touchend", uploadPics); } function selPic() { navigator.camera.getPicture(function(f) { var newHtml = "<img src='"+f+"'>"; $imagesDiv.append(newHtml); images.push(f); if(images.length === 1) { $("#uploadPictures").removeAttr("disabled"); } }, function(e) { alert("Error, check console."); console.dir(e); }, { quality: 50, sourceType: Camera.PictureSourceType.PHOTOLIBRARY, destinationType: Camera.DestinationType.FILE_URI }); } function uploadPics() { alert("Ok, going to upload "+images.length+" images."); var defs = []; var fd = new FormData(); images.forEach(function(i) { alert('processing '+i); var def = $.Deferred(); window.resolveLocalFileSystemURL(i, function(fileEntry) { alert('got a file entry'); fileEntry.file(function(file) { alert('now i have a file ob'); console.dir(file); var reader = new FileReader(); reader.onloadend = function(e) { var imgBlob = new Blob([this.result], { type:file.type}); fd.append('file'+(images.indexOf(i)+1), imgBlob); fd.append('fileName'+(images.indexOf(i)+1), file.name); def.resolve(); }; reader.readAsArrayBuffer(file); }, function(e) { alert('error getting file', e); }); }, function(e) { alert('Error resolving fs url', e); }); defs.push(def.promise()); }); $.when.apply($, defs).then(function() { alert("all things done"); var request = new XMLHttpRequest(); request.open('POST', 'url', true); request.send(fd); }); } Do lado do servidor, onde eu deveria receber a requisição e upar os arquivos, está conforme código abaixo:
      <?php header("Access-Control-Allow-Origin: *"); $imgFileName=date("Y").date("m").date("j")."_".$_POST['index']."_".rand(1000,9999).".jpg"; if(move_uploaded_file($_FILES['file']['tmp_name'], "anuncios/".$imgFileName)){ echo "upload ok"; //or anything you need } ?>  
    • By avelar.avelar
      Bom dia galera, estou tentando pegar informações de um campo do XML do Pagseguro.
      Informação que quero pegar para gravar no meu banco: 
       
             $pagseguro = PagSeguro::setReference($inscricaoCursosExtensao->id)
             $xml = simplexml_load_string($pagseguro, 'SimpleXMLElement',0,'',false);
             print_r(xml->$pagseguro->paymentLink);
       
    • By kelvinferraz
      Bom dia pessoal!
       
      Estou com uma situação, vou tentar colocar de forma clara e objetiva:

      Possuo uma aplicação que ainda estou em desenvolvimento no Laravel, a ideia da aplicação é liberar o acesso após a confirmação do pagamento de uma mensalidade, se o usuario não efetuar o pagamento ele não libera o acesso.

      Porém existem duas situações:
      É o usuário que vai pagar mensalmente e a verificação seria todo mês de um novo boleto gerado; O usuário que opinar pagar um plano anual então essa verificação seria feita anualmente.  
      A ideia é utilizar ao menos no inicio uma forma de integrar o PagSeguro com o Laravel e fazer essa verificação, eis que surge minha dúvida a que nível isso é possível? Confesso que estou meio perdido em relação a isso, caso alguém tenha algum "case" parecido, será que poderia me dar uma ajuda, ao menos para tentar explicar a melhor forma de fazer esse tipo de validação/acesso?
       
       
      Desde já agradeço a todos!
    • By avelar.avelar
      Pessoal, alguém conseguiu fazer funcionar o PagSeguro com o Laravel 6.0.0?
    • By avelar.avelar
      Bom dia Galera,
       
      Alguém poderias me ajudar ou algum exemplo em laravel de API para pegar os dados de retorno do boleto do pagseguro para gravar no meu banco?
       
      Agradeço a ajuda
       
      Avelar
×

Important Information

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