Foros del Web » Programando para Internet » PHP »

ventana file download

Estas en el tema de ventana file download en el foro de PHP en Foros del Web. Hola... Como puedo enviar al usuario una ventana File Download, que saca los browser para descargar ficheros, para que descargue un fichero a si pc???? ...
  #1 (permalink)  
Antiguo 02/11/2004, 09:43
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 19 años, 10 meses
Puntos: 0
ventana file download

Hola...

Como puedo enviar al usuario una ventana File Download, que saca los browser para descargar ficheros, para que descargue un fichero a si pc????

gracias
  #2 (permalink)  
Antiguo 02/11/2004, 14:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usando cabeceras HTTP adecuadas y haciendo que PHP lea tu archivo de tu servidor para entregarlo al buffer de salida puedes hacer todo eso..

Se trata de usar header() + readfile() o bien echo "... tu dato" según lo que requieras hacer: generar datos para descargar o bien leer un archivo para forzar su descarga

Ejemplos tienes en la función header()
www.php.net/header

Un saludo,
  #3 (permalink)  
Antiguo 12/11/2004, 05:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias cluster...

He leido en el manual sobre los header y como lograr un download y he probado varios códigos que he encontrado en la web, pero el fichero que descargo se me agrega el encabezamiento del fichero en que estoy.

Código:
...
	$str = $apelli.$delimiter.$nombre.$delimiter.$sexoav.$delimiter.$especi.$delimiter.
			$firma1.$delimiter.$firimg.$delimiter.$firmas.$delimiter.$firnot.$delimiter.
			$expedi.$delimiter.$lugnac.$delimiter.$dianac.$delimiter.$mesnag.$delimiter.
			$anonac.$delimiter.$notnac.$delimiter.$paisav.$delimiter.$lugfal.$delimiter.
			$diafal.$delimiter.$mesfal.$delimiter.$anofal.$delimiter.$notfal.$delimiter.
			$notas1.$delimiter.$direcc.$delimiter.$ntelef.$delimiter.$emails.$delimiter.
			$wwwurl.$delimiter.$fechai.$delimiter.$userid.$delimiter.$catego;

	$fp = fopen($path.$namefile, "a+");
	fwrite( $fp, $str);
	fclose($fp);

/*
	header("Content-Type: text/plain");
	header('Content-Disposition: attachment; filename="export.txt"');

	//echo $str;	
	readfile ($path.$filename);
*/

header('Content-Description: File Transfer'); 
header('Content-Type: application/force-download'); 
header('Content-Length: ' . filesize($namefile)); 
header('Content-Disposition: attachment; filename=' . basename($namefile)); 
readfile($path.$namefile);
  #4 (permalink)  
Antiguo 12/11/2004, 08:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
pero el fichero que descargo se me agrega el encabezamiento del fichero en que estoy
Que significa eso?

Por lo demás .. si tu en ese script compones tu contenido a entregar a descargar .. NO es necesario que crees un archivo para luego componer las cabeceras HTTP (con header()) y lo lees para entregarlo al buffer de salida (con readfile()) .. Tan sólo debes hacer:

echo $str;

en lugar de readfile() .. y omitir todo ese código que genera ese archivo ...

A todo esto .. cuando pongas código en el foro .... "intenta" limpiarlo de tus pruebas (de código que comentes y demás .. suele confundir más que ayudar).

Un saludo,
  #5 (permalink)  
Antiguo 12/11/2004, 10:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 19 años, 10 meses
Puntos: 0
gracias por el consejo.

lo que quiero decir es que en un fichero al llamar a

header('Content-Description: File Transfer');
header('Content-Type: application/force-download');

echo $str;

me download todo el encabezamiento del fichero de donde ejecuto esa instrucción.
por ejemplo los <script..><title...>, ect.

y yo solo necesito que me download el contenido de $str
  #6 (permalink)  
Antiguo 12/11/2004, 10:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Es que en ese script que va hacer ese "download" no tiene por qué exister más HTML por médio .. no tiene sentido .. ese script hay que llamarlo por separado no como parte de un script PHP que origine X salida (ese HTML que mencionas) + tu $str.

Podrías usar el control del buffer de PHP (funciones: ob_start() y afines) pero no es la idea.

Un saludo,
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 00:09.