tengo un problema con los header al descargar archivos desde la BD, estoy guardando los archivos en una campo BLOB(tabla 'files'), tengo este codigo para mostrar los archivo en una lista:
Código HTML:
<?php require('conec.php'); ?> <!DOCTYPE html> <head> <title>aaa</title> </head> <body> <div id="header"> <h2>External Files</h2> </div> <!-- end header div --> <!-- start wrap div --> <div id="wrap"> <!-- start PHP code --> <?php $cons = mysql_query("SELECT record_created, name FROM kommunikation_process WHERE email='[email protected]' AND token='xxxxxxxxx' AND used_token='1'") or die(mysql_error()); $record = ""; $nombre = ""; while($fila = mysql_fetch_array($cons)) { $date = date_create($fila['record_created']); $record = date_format($date, 'g:ia \o\n l jS F Y'); $nombre = $fila['name']; } function tamano_archivo($peso , $decimales = 2 ) { $clase = array(" Bytes", " KB", " MB", " GB", " TB"); return round($peso/pow(1024,($i = floor(log($peso, 1024)))),$decimales ).$clase[$i]; } ?> <!-- title and description --> <p>Here you can download the file that has been uploaded on xxx for you on: <?php echo $record?>.</p> <p>from <b><?php echo $nombre?></b>.</p> <?php $qry = "SELECT id,file_name, file_type,file_size FROM files where ref_kommunikation_process=42"; $res = mysql_query($qry) or die(mysql_error()); $lista = '<ol>'; //generamos la lista while($data = mysql_fetch_assoc($res)){ $lista .= '<li> <a href="descargar.php?id='.$data['id'].'">Download </a><span>the file </span><b>'.$data['file_name'].'</b><span>('.tamano_archivo($data['file_size']).')</span></li>'; } $lista .= '</ol>'; echo $lista; mysql_close(); // Cerrar conexion ?> </div> </body> </html>
Código PHP:
<?php
require_once 'conec.php';
if(isset($_GET['id']) && !empty($_GET['id'])){
$id = $_GET['id'];
$qry = "SELECT file_name,file_type,file_original FROM files WHERE id=$id";
$res = mysql_query($qry) or die(mysql_error());
$data = mysql_fetch_assoc($res);
header("Content-Type: ".$data['file_type']);
header("Content-Disposition: attachment; filename=".$data['file_name']);
print_r($data['file_original']);
}
mysql_close(); // Cerrar conexions
?>
espero me puedan ayudar con esto, gracias de antemano.
Saludos!