Jump to content
novoAquiNoForum

[Resolvido] COMO RECUPERAR UM ARQUIVO BLOB DO MYSQL E SALVAR NUMA PASTA COM PHP

Recommended Posts

Olá Pessoal,

 

Estou com uma dúvida sagaz, tenho uma coluna tipo BLOB no MYSQL, a qual armazena arquivos PDF's enviados a partir do upload. Não salvo o arquivo em pasta na hora do UPLOAD, somente salvo no banco de dados, sei que não é aconselhável, mas tenho meus motivos para fazer desta forma. Emfim, agora preciso fazer um script em PHP que recupere este arquivo do banco e baixe ou salve direto numa pasta que tenho, pois depois preciso enviar estes arquivos como anexo em e-mail, através do PHP Mailer, pois acho que é o único jeito de fazer. Alguém tem uma luz aí?

Share this post


Link to post
Share on other sites

Olá, depois de muita pesquisa, resolvi o meu problema com o seguinte código:

<?php
include("conexao.php");

//recebo os ids dos arquivos selecionados pelo usuário
$selecao  = substr($_GET['selecao'],0,-1);

//Monto a query para a consulta no Banco de dados MYSQL
$sql = "SELECT
         id_documento
        ,nome_documento_original
        ,dados_documento 
        FROM documentos 
        WHERE id_documento IN ($selecao)";

//Executo a query
$result = $conn->query($sql);

//Faço um laço de repetição While enquanto existir registros
while($query = mysqli_fetch_object($result)){
  	
   //Coloco meu arquivo BLOB na variável $arquivo
    $arquivo = $query->dados_documento;

   //Este é o caminho que quero criar os arquivos com o nome de cada um
    $caminho = "MINHA_PASTA/".$query->nome_documento_original;

   //Este comando cria o PDF com base dos arquivos binários listados do banco
   //Abre o arquivo
    $fp = fopen($caminho, "a");
   //Escreve dentro do arquivo o conteudo binário salvo no banco
    $criaPDF = fwrite($fp, $arquivo);
   //Fecha o arquivo
    fclose($fp); 
}

?>

 

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 terra
      Olá,
       
      Preciso pegar o valor desse select
       
       
       aqui nessa query
       
       
      Agradeço qualquer ajuda
    • By violin101
      Caros amigos, saudações...
       
      Gostaria de tirar uma dúvida com os amigos se tem a possibilidade de fazer e como fazer.
       
      A pasta MODELS tem como fazer separado como a pasta CONTROLLERS, por exemplo:
       
      a pasta controller consigo fazer assim: PASTA e SUBPASTAS.
       
      controller
      |__ Admin
      |_____ Estoque
      |_______ Financeiro
       
      na pasta Models, fica tudo junto as funções, como por exemplo:
      admin_model.php
      caixa_model.php
      vendas_model.php
      e etc
       
      na Models, tem como fazer como na pasta controller, assim:
      |__ Admin
           |__ admin_model.php
      |_____ Estoque
                 |__ estoque_model.php
      |_______ Financeiro
                    |__ caixa_model.php
       
      para chamar uma função no controller, faço desta forma: 
      <?php $this->load->model('categorias_model'); $this->data['categorias'] = $this->categorias_model->getActive('categorias', 'categorias.idCategorias,categorias.categoria'); ?>  
      Conforme minha dúvida acima, como seria o caminho para chamar esta função:   
      $this->load->model('categorias_model');
       
       
      Grato,
       
      Cesar
    • By Samuel Pietro
      Tenho um select em PDO e preciso que a consulta retornada vire uma variavel, mas a variavel só pega a ultima linha da tabela e eu preciso que pegue todas as linhas que existirem.
       
      $conexao = conexao::getInstance(); $sql = 'SELECT * FROM RegistroE'; $stm = $conexao->prepare($sql); $stm->execute(); $Sql = $stm->fetchAll(PDO::FETCH_OBJ); foreach ($Sql as $SqlReg): $conteudo_meio = picture_X($SqlReg->E_01,1) .picture_X($SqlReg->E_02,25) .picture_9($SqlReg->E_03,4) .picture_X($SqlReg->E_04,14) .picture_9($SqlReg->E_05,8) .picture_9($SqlReg->E_06,8) .picture_9($SqlReg->E_07,8) .picture_9($SqlReg->E_08,8) .picture_9($SqlReg->E_09,8) .complementoRegistro(96,"brancos") .picture_9($SqlReg->E_11,1) .complementoRegistro(1,"brancos") ; endforeach; Como eu poderia está fazendo isto?
    • By peterstefan
      Bom dia, estou fazendo uma cadastro via rest e estou utilizando o curl para cadastrar no webservice...
      Meu código está cadastrando tudo certinho, porem quando ele cadastra e mostra o retorno que foi cadastrado com sucesso ele fica o AGUARDE, CARREGANDO e não para.. não sei oque esta faltando pq já tentei varias coisas e não deu certo... 
       
       
       
      $Data = [ "nomeRazaoSocial" => $PostData['nomeRazaoSocial'], "identMF" => $PostData['identMF'], "email" => $PostData['email'], "telefone" => $PostData['telefone'], "senhaProvisoria" => $PostData['senhaProvisoria'] ]; $DataString = json_encode($Data); $curl = curl_init(WEBSERVICECADASTRO); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $DataString); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($DataString)) ); $result = curl_exec($curl); if ($result) { $jSON['success'] = "<i class='icon-checkmark'></i>Pronto, cadastro foi realizado com sucesso!"; }else{ $jSON['error'] = "<i class='icon-warning'></i>Oops! Erro ao cadastrar! Por favor, tente novamente!"; }  

       

    • By RSN
      Boa Noite,
      Preciso enviar uma consulta sql no corpo do e-mail, porém não estou conseguindo concatenar o laço while.
      <?php include_once('conexao.php'); require 'PHPMailer/PHPMailerAutoload.php'; $resultado = mysql_query("SELECT * FROM cupom WHERE FlagEstorno = 1;"); $linhas = mysql_num_rows($resultado); $mensagem = '<div class="x_content"> <table id="datatable-buttons" class="table table-striped table-bordered"> <thead> <tr> <th>Loja</th> <th>Nro Cupom</th> <th>Data</th> <th>Operador</th> </tr> </thead> <tbody> while($linhas = mysql_fetch_array( $resultado)){ echo " <tr>"; echo "<td>".$linhas['nroloja']."</td>"; echo "<td>".$linhas['NroCupom']."</td>"; echo "<td>".$linhas['DataProc']."</td>"; echo "<td>".$linhas['Operador']."</td>"; echo " </tr>"; }'; $mail = new PHPMailer(); $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->SMTPSecure = 'tls'; $mail->Username = ''; $mail->Password = ''; $mail->Port = 587; $mail->setFrom(''); $mail->addReplyTo(''); $mail->addAddress('', 'Nome'); $mail->isHTML(true); $mail->Subject = 'Assunto do email'; $mail->Body = $mensagem; $mail->AltBody = 'Para visualizar essa mensagem acesse http://site.com.br/mail'; //$mail->addAttachment('/tmp/image.jpg', 'nome.jpg'); if(!$mail->send()) { echo 'Não foi possível enviar a mensagem.<br>'; echo 'Erro: ' . $mail->ErrorInfo; } else { echo 'Mensagem enviada.'; } ?>  
×

Important Information

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