2009-04-08 12 views
8

¿Cómo puedo mostrar el cuadro de diálogo 'Guardar como' usando PHP que pedirá al usuario que descargue una cadena como archivo de texto? Básicamente, recuperaré algunos valores de la base de datos y deseo poder descargar un archivo .txt que contenga esta información.Cómo mostrar el cuadro de diálogo 'Guardar como' usando PHP para archivos de texto

+0

simplemente lanzándolo aquí porque lo necesitaba además de la respuesta de emil .... para saltos de línea: echo "\ r \ n"; – CheeseConQueso

Respuesta

24

Esto debería funcionar:

header('Content-type: text/plain'); 
header('Content-disposition: attachment; filename="test.txt"'); 
6

Sólo para ampliar sobre la respuesta de @Emil H:

El uso de esas llamadas de cabecera sólo funcionará en el contexto de una nueva solicitud. Tendrá que implementar algo que permita que su secuencia de comandos sepa cuándo se está enviando realmente el archivo en lugar de cuándo se muestra un formulario que le dice que descargue el archivo.

2

Para aclarar el uso de header():

Official PHP Manual:

header() se utiliza para enviar una cabecera HTTP prima. Consulte la especificación HTTP/1.1 para obtener más información sobre los encabezados HTTP.

Recuerde que se debe llamar al encabezado() antes de enviar cualquier salida real, ya sea mediante etiquetas HTML normales, líneas en blanco en un archivo o desde PHP. Es un error muy común leer código con include(), o require(), funciones u otra función de acceso a archivos, y tienen espacios o líneas vacías que se emiten antes de header(). El mismo problema existe cuando se usa un único archivo PHP/HTML.

Básicamente, está cambiando toda la página cuando usa el encabezado(). Asegúrese de que el único contenido que repite sea la cadena.

3
<? 
header ("Content-Type: application/download"); 
header ("Content-Disposition: attachment; filename=$yourfile"); 
header("Content-Length: " . filesize("$yourfile")); 
$fp = fopen("$yourfile", "r"); 
fpassthru($fp); 
?> 
Cuestiones relacionadas