Quiero escribir un archivo de texto en el servidor a través de Php, y hacer que el cliente descargue ese archivo.envíe un archivo al cliente
¿Cómo haré eso?
Esencialmente, el cliente debería poder descargar el archivo del servidor.
Quiero escribir un archivo de texto en el servidor a través de Php, y hacer que el cliente descargue ese archivo.envíe un archivo al cliente
¿Cómo haré eso?
Esencialmente, el cliente debería poder descargar el archivo del servidor.
PHP tiene una serie de funciones simplistas similares a C para escribir en archivos. He aquí un ejemplo sencillo:
<?php
// first parameter is the filename
//second parameter is the modifier: r=read, w=write, a=append
$handle = fopen("logs/thisFile.txt", "w");
$myContent = "This is my awesome string!";
// actually write the file contents
fwrite($handle, $myContent);
// close the file pointer
fclose($handle);
?>
Es un ejemplo muy básico, pero se pueden encontrar más referencias a este tipo de operación aquí:
Sólo enviar un enlace en el sitio para http://example.com/textfile.php
Y en ese archivo PHP que poner el siguiente código:
<?php
header('Content-Type: text/plain');
print "The output text";
?>
De esta forma puede crear la dinámica de contenido (desde una base de datos) ... Intente buscar en Google "Content-Type" si este no es el que está buscando.
Además de los datos ya publicados, hay un encabezado que puede intentar.
a sólo un sugerencia a la forma en que va a ser manejado, y el agente de usuario puede optar por ignorarlo, y simplemente mostrar el archivo en la ventana si se sabe:
<?php
header('Content-Type: text/plain'); # its a text file
header('Content-Disposition: attachment'); # hit to trigger external mechanisms instead of inbuilt
Ver Rfc2183 para más información sobre el encabezado Content-Disposition.
No sabía acerca de "Content-Disposition". Gracias por la info. +1 – Calvin
Si configura el tipo de contenido como application/octet-stream, el navegador SIEMPRE ofrecerá el archivo como descarga y nunca intentará mostrarlo internamente, independientemente del tipo de archivo que sea.
<?php
filename="download.txt";
header("Content-type: application/octet-stream");
header("Content-disposition: attachment;filename=$filename");
// output file content here
?>
PD: aunque podría funcionar con el pequeño d en algunos UA, es * no * la especificación de RFC, por lo que es mejor utilizar la versión en mayúscula. –
el otro problema con depender de octet-stream, es forzar al usuario a guardarlo, porque no puede usar MIME para determinar qué aplicación para abrirlo externamente, y eso es un problema. –
@Kent Fredric: Según RFC, los nombres de los encabezados no distinguen entre mayúsculas y minúsculas. – tylerl
Esta es la mejor manera de hacerlo, suponiendo que no desea que el usuario vea la URL real del archivo.
<?php
$filename="download.txt";
header("Content-disposition: attachment;filename=$filename");
readfile($filename);
?>
Además, puede proteger sus archivos con mod_access.
El enlace está roto. ¿Podrías arreglarlo? –
Es un enlace de ejemplo. – Zeusoflightning125