Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eduardo Vilarinho

[Resolvido] Download de Arquivo BLOB

Recommended Posts

Pessoal, estou com uma dificuldade. Eu preciso que alguns arquivos fiquem hospedados somente no banco de dados, sem upload para alguma pasta do servidor. Aparentemente o upload para o MySQL está dando certo, visto que o tamanho do arquivo enviado no banco de dados é o mesmo tamanho do arquivo original. Abaixo segue o codigo do envio.

 

<?php
include ("conecta_mysql.inc");
$arquivo = $_FILES['arquivo']['tmp_name'];
$tamanho = $_FILES['arquivo']['size'];
$tipo = $_FILES['arquivo']['type'];
$nome = $_FILES['arquivo']['name'];
$ano = $_POST['ano'];
$fp = fopen($arquivo, "rb");
$conteudo = fread($fp, $tamanho);
$conteudo = addslashes($conteudo);
fclose($fp);
$qry = mysql_query("INSERT INTO `direito`.`horarios_turma_b_noturno` VALUES (0, '$nome', '$titulo', '$conteudo', '$tipo', '$ano')");
?>

E aqui é onde eu recupero o arquivo:

 

<?php
include ("conecta_mysql.inc");
$id = $_GET['id'];
$download = mysql_query("SELECT nome, tipo FROM `horarios_turma_b_noturno` WHERE id='$id'");
$nome = mysql_result($download, 0, "nome");
$tipo = mysql_result($download, 0, "tipo");
header('Content-type: $tipo');
header("Content-Disposition: attachment; filename=$nome");
?>

Está acontecendo que o arquivo vem corrompido (por exemplo, .pdf) ou não tem nada dentro (por exemplo, .txt).

 

Alguem sabe qual seria o problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem pessoal, acabei conseguindo arrumar o problema, precisava de mais alguns headers. Abaixo o trecho que teve que ser modificado.

 

<?php
 include ("conecta_mysql.inc");
 $id = $_GET['id'];
 $download = mysql_query("SELECT nome, tipo, conteudo FROM `horarios_turma_b_noturno` WHERE id='$id'");
 $nome = mysql_result($download, 0, "nome");
 $tipo = mysql_result($download, 0, "tipo");
 $conteudo = mysql_result($download, 0, "conteudo");
 header('Content-Type: text/html; charset=utf-8'); 
 header('Content-Type: filesize($conteudo)');
 header('Content-Type: $tipo');
 header("Content-Disposition: attachment; filename=$nome");
 print($conteudo);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.