Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas al descargar archivo mediante PHP

Estas en el tema de Problemas al descargar archivo mediante PHP en el foro de PHP en Foros del Web. Hola amigos, tengo un problema con los header al descargar archivos desde la BD, estoy guardando los archivos en una campo BLOB(tabla 'files'), tengo este ...
  #1 (permalink)  
Antiguo 23/05/2013, 03:58
 
Fecha de Ingreso: agosto-2011
Ubicación: por ahi
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
Información Problemas al descargar archivo mediante PHP

Hola amigos,

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> 
y el codigo para descargar es:
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
?>
me gustaria saber si ven algún error en mi codigo, ya que siempre que intento descargar cualquier archivo me dice que es corrupto, ya he tratado con varias conbinaciones de header pero siegue igual=/.

espero me puedan ayudar con esto, gracias de antemano.

Saludos!

Última edición por gio_vela10; 23/05/2013 a las 04:17
  #2 (permalink)  
Antiguo 23/05/2013, 08:58
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problemas al descargar archivo mediante PHP

soy de los que opina que tener el binario en una DB es más un dolor de cabeza que una solución, pero bueno....

veo que usas print_r, lo que puede causarte problemas, trata de usar echo solamente

consulte el manual de php sobre print_r y verá el porque no la debe usar
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 23/05/2013, 11:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 100
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Problemas al descargar archivo mediante PHP

hace algunos dias tuve un problema parecido, lo solucione de la siguiente manera:


Código:
	header("Content-Type: $type");
	header("Content-Disposition: attachment; filename=$filename");
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: " . $size);
	//Download File
	ob_end_clean();
	flush();
	readfile($file);
espero te sirva
  #4 (permalink)  
Antiguo 06/06/2013, 07:43
 
Fecha de Ingreso: agosto-2011
Ubicación: por ahi
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemas al descargar archivo mediante PHP

Cita:
Iniciado por maycolalvarez Ver Mensaje
soy de los que opina que tener el binario en una DB es más un dolor de cabeza que una solución, pero bueno....
Hola Muchas gracias, no habia podido responder antes, pienso lo mismo acerca de guardar el binario en la BD, pero bueno ya intente de todo pero el problema sigue igual. Seguire intentando.

Saludos y gracias a los dos.

Etiquetas: html, mysql, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.