none
Download PDF em (mediumBlob) do banco de dados C# PHP e MysQL RRS feed

  • Pergunta

  • Boa noite,

    Eu tenho uma tabela no banco de dados que cadastra arquivos(pdf,img,png e etc...) chamada

    boletos:

    CREATE TABLE boletos ( 
     protocolo int(11) NOT NULL AUTO_INCREMENT,
     boleto mediumblob NOT NULL,
     nomeBoleto varchar(20) DEFAULT NULL,
     tipoBoleto varchar(20) DEFAULT NULL,
     PRIMARY KEY (protocolo));

    Cadastro os arquivos em um form com C# transformando eles em bytes[] e inserindo no campo boleto mediumblob, a extensão do arquivo em tipoBoleto e o nome do arquivo em nomeBoleto, até ai tudo bem, só que agora presciso disponibilizar esses downloads dos arquivos em uma pagina PHP, as imagens baixam e abre perfeitamente, o problema é quando baixa o pdf, ele baixa e abre somente na pagina se eu selecionar o adobe, dai quando eu abro a pasta o arquivo está corrompido, ele não lê...já abri o arquivo em um notepad não apresenta erro, apresenta ele todo codificado, ou seja ta perfeito, o problema é que não baixa com a extensão correta. Meu arquivo de download está assim:

    download.php

    <?php
    include "config.php";
    
    $GerParam=filter_input(INPUT_GET, "protocolo" ,FILTER_DEFAULT);
    if(isset($_GET['protocolo'])){
         $protocolo = $_GET['protocolo'];
         $stat = $db->prepare("SELECT nomeBoleto,tipoBoleto,boleto FROM boletos WHERE protocolo=?");
    
        $stat->execute(array($_GET['protocolo']));
        $stat->bindColumn(1, $nomeBoleto, PDO::PARAM_STR, 256);
        $stat->bindColumn(2, $tipoBoleto, PDO::PARAM_STR, 256);
        $stat->bindColumn(3, $boleto, PDO::PARAM_LOB);
        $stat->fetch(PDO::FETCH_BOUND);
    
          header('Content-Type: $tipoBoleto; charset=utf-8');
          header("Content-Type:" .$tipoBoleto);
          header("Content-Length: " . strlen($boleto));
          header('content-dis; filename="'.basename($nomeBoleto).'"'); 
          
          echo $boleto;
     
    }
    
    ?>
    Alguém pode me ajudar? já percorri a internet toda li, artigos, documentação PHP e nada:(


    • Editado Diana Alves quarta-feira, 29 de maio de 2019 16:04
    quarta-feira, 29 de maio de 2019 03:09

Respostas

  • Olá moça,

    já fiz um desse, vê se resolve o problema:

    //Muda somente essa parte dos header 
    header('Accept-Ranges: bytes');
                    header('Content-Transfer-Encoding: binary');
                    header("Content-Type: $tipoBoleto");
                    header("Content-Dis; filename=$nomeBoleto");
                    echo $boleto;

    • Marcado como Resposta Diana Alves quinta-feira, 30 de maio de 2019 01:49
    quinta-feira, 30 de maio de 2019 01:42

Todas as Respostas

  • Gente me ajudem, não sei se esses posts aceitam o php
    quinta-feira, 30 de maio de 2019 00:08
  • Olá moça,

    já fiz um desse, vê se resolve o problema:

    //Muda somente essa parte dos header 
    header('Accept-Ranges: bytes');
                    header('Content-Transfer-Encoding: binary');
                    header("Content-Type: $tipoBoleto");
                    header("Content-Dis; filename=$nomeBoleto");
                    echo $boleto;

    • Marcado como Resposta Diana Alves quinta-feira, 30 de maio de 2019 01:49
    quinta-feira, 30 de maio de 2019 01:42
  • Funcionou, perfeito, mto obrigado mesmo!

    salvou meu tcc. Obrigado de verdade:)

    quinta-feira, 30 de maio de 2019 01:49