2012-08-10 8 views
14

Im utilizzando un pulsante per dirigere a uno script che crea un file di testo:Scrivere un file di testo e la forza per scaricare con php

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

dopo che voglio il browser web di proporre per scaricare o aprire questo file come devo fare? Grazie

+0

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

+0

possibile duplicato del [file di Forza scarica in php] (http://stackoverflow.com/questions/3718962/force-file-download-in-php) –

risposta

30

uso readfile() e application/octet-stream intestazioni

<?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 l'ho provato funziona, ma se voglio che il browser web proponga di scaricare 2 file come dovrebbe Lo voglio? – stevey

+1

non puoi forzare il download di 2 file, a meno che non li chiami separatamente da un'altra pagina ... con iframe! –

+0

Per me è stato necessario modificare il mio handle: $ handle = fopen ("php: // output", "w"); Inoltre, sembrava che il fwrite non sovrascrisse nulla, quindi ho dovuto chiamare ob_end_clean() – Ghoti

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

dovrebbe funzionare

Problemi correlati