Foros del Web » Programando para Internet » PHP »

descargar archivo

Estas en el tema de descargar archivo en el foro de PHP en Foros del Web. Hola, bueno lo que quería saber es lo siguiente. Hice una pagina que crea un listado de acuerdo a una consulta en la bd pero ...
  #1 (permalink)  
Antiguo 30/06/2005, 09:23
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 19 años
Puntos: 0
descargar archivo

Hola, bueno lo que quería saber es lo siguiente.

Hice una pagina que crea un listado de acuerdo a una consulta en la bd pero además, genera un archivo xls, mi pregunta es si hay alguna función que me permita descargar dicho archivo directamente sin que lo habra el browser. Bueno eso, gracias.
  #2 (permalink)  
Antiguo 30/06/2005, 09:29
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Utilizando un header podés forzar al explorador a descargar el archivo.
Sino me equivoco el que tenés que utilizar es:
header("Content-Type: application/force-download");

Más info en http://ar.php.net/manual/es/function.header.php
  #3 (permalink)  
Antiguo 30/06/2005, 13:11
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 19 años
Puntos: 0
he estado probando, pero sin lograr el resultado deseado. Ese header que pusiste, descarga la pagina php pero no el archivo desead, no se me ocurre que hacer...... help
  #4 (permalink)  
Antiguo 30/06/2005, 13:13
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Postea un poco del código que utilizas, para poder ayudarte mejor.
Saludos
  #5 (permalink)  
Antiguo 30/06/2005, 13:18
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 19 años
Puntos: 0
mysql_select_db($database_conexpruebas, $conexpruebas);
$query_user = "SELECT * FROM usuarios";
$reg = mysql_query($query_user, $conexpruebas) or die(mysql_error());

$shtml="<table>";
$shtml=$shtml."<tr><td>nombres</td><td>apellidos</td><td>nickname</td></tr>";
while ($row = @mysql_fetch_array($reg)) {
$shtml=$shtml."<tr><td>".$row["nombres_usuario"]."</td><td>".$row["apellidos_usuario"]."</td><td>".$row["nombres_usuario"]."</td></tr>";
}
$shtml=$shtml."</table>";
$scarpeta="archivos/"; //carpeta donde guardar el archivo.
$sfile=$scarpeta.$_POST['txtnom'].".xls"; //ruta del archivo a generar
$fp=fopen($sfile,"w");
fwrite($fp,$shtml);
fclose($fp);

hasta aqui no tengo problemas, ahi se genero el archivo .xls, ahora lo que quiero es que al pinchar un vinculo al archivo, por ejemplo, se descargue en lugar de habrirse, o se descargue al momento de crearlo, pero que se descargue, no que se ejecute. Gracias por la ayuda.
  #6 (permalink)  
Antiguo 30/06/2005, 13:39
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Una solución un poco sucia, puede ser hacer una redirección al final del script:
Código PHP:
header("Location: $sfile"); 
Saludos
  #7 (permalink)  
Antiguo 30/06/2005, 14:19
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 19 años
Puntos: 0
pero si no me equivoco, el header("location") habre esa pagina, me mostraria el archivo en el browser, pero no lo descargaría.
  #8 (permalink)  
Antiguo 30/06/2005, 15:43
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
mmm... no estoy muy seguro... supongo que el Internet Explorer reconocerá ese archivo y lo abrirá... (otro navegador no, y a mí ni con el Explorer lo muestra sino que lo descarga).

Pero supongamos que eso es lo que pasa... entonces prueba con la cabecera:
Código PHP:
header('Content-type: application/xls');
header('Content-Disposition: attachment; filename="$sfile"');
echo 
$sfile
Saludos

Última edición por jpinedo; 30/06/2005 a las 16:11
  #9 (permalink)  
Antiguo 01/07/2005, 08:06
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 19 años
Puntos: 0
Gracias, no era exactamente lo que necesitaba ya que este código lo que hace es guardar el despliegue de la pantalla como un exel y no descargar el archivo pero para este caso me sirve perfectamente, gracias, te pasaste.

Última edición por PabloP; 01/07/2005 a las 08:20
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 05:03.