2012-08-10 17 views
14

Im usando un botón para dirigir a un script que crea un archivo de texto:Escribir un archivo de texto y la fuerza de descarga con php

<?php 
$handle = fopen("file.txt", "w"); 
fwrite($handle, "text1....."); 
fclose($handle); 
?> 

después de eso quiero que el navegador web para proponer a descargar o abrir este archivo ¿cómo debo hacer? Gracias

+0

ver http://php.net/manual/en/function.readfile.php – yent

+0

posible duplicado de [Fuerza archivo descargar en php] (http://stackoverflow.com/questions/3718962/force-file-download-in-php) –

Respuesta

30

uso readfile() y application/octet-stream cabeceras

<?php 
    $handle = fopen("file.txt", "w"); 
    fwrite($handle, "text1....."); 
    fclose($handle); 

    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename('file.txt')); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize('file.txt')); 
    readfile('file.txt'); 
    exit; 
?> 
+0

Thx Lo he intentado funciona, pero si quiero que el navegador web proponga descargar 2 archivos, ¿cómo debería hacerlo? ¿Hago? – stevey

+1

no puede obligar a descargar 2 archivos, a menos que los llame por separado desde otra página ... ¡con iframes! –

+0

Fue necesario para mí cambiar mi manejador: $ handle = fopen ("php: // output", "w"); Además, parecía que fwrite no sobrescribía nada, así que tuve que llamar a ob_end_clean() – Ghoti

1
$content = file_get_contents ($filename); 
header ('Content-Type: application/octet-stream'); 
echo $content; 

deben trabajar

Cuestiones relacionadas