Come posso visualizzare la finestra di dialogo "Salva con nome" usando PHP che chiederà all'utente di scaricare una stringa come file di testo? Fondamentalmente recupererò alcuni valori dal database e voglio quindi poter scaricare un file .txt che contiene questi dati.Come mostrare la finestra di dialogo "Salva come" usando PHP per i file di testo
risposta
Questo dovrebbe funzionare:
header('Content-type: text/plain');
header('Content-disposition: attachment; filename="test.txt"');
Giusto per espandere sulla risposta @Emil H:
Utilizzando quelle chiamate intestazione funzionerà solo nel contesto di una nuova richiesta. Avrai bisogno di implementare qualcosa che permetta al tuo script di sapere quando effettivamente sta inviando il file a differenza di quando visualizza un modulo che dice all'utente di scaricare il file.
Per chiarire l'utilizzo di intestazione():
intestazione() viene utilizzato per inviare un'intestazione HTTP grezzo. Vedi la »specifica HTTP/1.1 per maggiori informazioni sulle intestazioni HTTP.
Ricordare che l'intestazione () deve essere chiamata prima che venga inviato qualsiasi output effettivo, tramite normali tag HTML, righe vuote in un file o da PHP. È un errore molto comune leggere il codice con include() o require(), funzioni o un'altra funzione di accesso ai file e avere spazi o righe vuote che vengono emesse prima dell'intestazione (). Lo stesso problema esiste quando si utilizza un singolo file PHP/HTML.
Quindi, in pratica, si sta modificando l'intera pagina quando si utilizza l'intestazione(). Assicurati che l'unico contenuto che fai eco sia la stringa.
<?
header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=$yourfile");
header("Content-Length: " . filesize("$yourfile"));
$fp = fopen("$yourfile", "r");
fpassthru($fp);
?>
buttare questo qui perché ne avevo bisogno oltre alla risposta di emil .... per interruzioni di riga: echo "\ r \ n"; – CheeseConQueso