Foros del Web » Programando para Internet » PHP »

Descargar archivo generado con php

Estas en el tema de Descargar archivo generado con php en el foro de PHP en Foros del Web. Hola, Tengo una aplicación para descargar archivos generados con php, pero al hacer la descarga me baja el programa php (el código) y no el ...
  #1 (permalink)  
Antiguo 20/10/2008, 04:52
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años
Puntos: 0
Descargar archivo generado con php

Hola,

Tengo una aplicación para descargar archivos generados con php, pero al hacer la descarga me baja el programa php (el código) y no el contenido que debería resultar de este.

Antes funcionaba bien si ponía la ruta URL completa (como si fuera externo), pero por una restricción del servidor ahora no puedo cargar archivos "externos" (aunque este de hecho no lo sea).

Os paso el programa:

$f = $_GET["f"];
$f="archivo.php";
Aquí es donde antes ponía http://archivo.php y sí me funcionaba

Añado: he visto este http://www.forosdelweb.com/f18/como-...on-php-593683/ enlace en que se trata el tema, pero no me sirve porque el archivo que genera php es xml, y el navegador se para cuando sale el xml.


header("Content-type: application/octet-stream");

header("Content-Disposition: attachment; filename=\"$nombredescarga\"\n");
$fp=fopen("$f", "r");
fpassthru($fp); // print("<br>Descargando $nombredescarga<br>");


¿Alguna idea?

Última edición por JBRS; 20/10/2008 a las 05:20 Razón: adición
  #2 (permalink)  
Antiguo 20/10/2008, 05:31
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Descargar archivo generado con php

algo asi

Código PHP:

<?php $ruta $_GET['ruta'];
$archivo_arr explode"/"$ruta );
$archivo $archivo_arr[count($archivo_arr) - 1];

if( !
file_exists$ruta ) ) {
         die( 
"No existe $ruta" );
}

header"Content-Disposition: attachment; filename=".$archivo."");
header"Content-type: application/octet-stream" ); 

@
readfile$ruta );  
?>
  #3 (permalink)  
Antiguo 20/10/2008, 05:38
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años
Puntos: 0
Respuesta: Descargar archivo generado con php

Nop, eso también muestra el contenido del archivo php (y tampoco lo descarga). Yo necesito que descargue el RESULTADO del php. ¿Ideas?
  #4 (permalink)  
Antiguo 20/10/2008, 05:52
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Descargar archivo generado con php

pero a que te refieres con el resultado del php???

ese codigo descarga archivos.

no se entiende bien lo que quieres.
  #5 (permalink)  
Antiguo 20/10/2008, 06:00
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años
Puntos: 0
Respuesta: Descargar archivo generado con php

A ver, lo explico más esquemático:

Tengo un archivo a.php cuya función es generar un código xml

Quiero descargar ese xml.

Para ello tengo b.php que abre a.php para hacer la descarga.

El caso es que si a b.php le pongo descargar a.php, me descarga el código php (no el xml). Podía resolverlo hasta la fecha poniendo http://a.php, ya que entonces procesaba a.php, y me daba ya el código xml.

Por restricciones de seguridad mi servidor ya no permite acceder con http://.

He visto otro post (lo indico arriba) en que se podía hacer con un include, pero en mi caso al hacer el include el navegador se raya con el xml y no permite descargar.
  #6 (permalink)  
Antiguo 25/06/2014, 11:41
 
Fecha de Ingreso: junio-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Descargar archivo generado con php

Para que puedas descargar el resultado de un script php es necesario que lo guardes en un archivo de esta manera:
Código PHP:
$file=fopen("xml/".$nombreXML.".xml","w") or die("Problemas en la creacion");//En esta linea lo que hace PHP es crear el archivo, si ya existe lo sobreescribe
fputs($file,$resultadoPHP);//En esta linea abre el archivo creado anteriormente e ingresa el resultado de tu script PHP
fclose($file);//Finalmente lo cierra 
Para descargar el archivo es necesario este script
Código PHP:
$ruta="xml/".$nombreXML.".xml";
header ("Content-Disposition: attachment; filename=".$ruta);
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($ruta));
readfile($ruta); 
Espero que sea de tu ayuda
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 10:59.