2010-12-06 112 views
36

更新#1下載創建一個文本文件,即時

什麼已經張貼下面是當場就因爲它讓輸出文件。它所做的是輸出字符串數據,然後是HTML格式的其餘部分。有沒有什麼辦法可以阻止放入文件的內容以及剛剛顯示給瀏覽器的內容。

更新#2

只需添加exit()和一切工作正常。謝謝!

EOU

嗨,

我一直環顧四周,看到了一些東西相似但不完全得到什麼,我需要做全面完成任務的把握。

目前我有一個表格,用戶提供一些細節。在提交時將其發佈回自己並處理POST變量。我有一個預先製作的HTML網頁模板,可以將信息放入其中,只需執行str_replace即可正常工作。

我現在要做的是將它作爲下載文件導出到純文本文件中。因此,最終結果是用戶單擊表單上的提交,然後他們打開一個下載彈出窗口,將修改的網頁作爲.txt文件打開。

據我瞭解,我需要做一些使用HTTP頭部功能的東西。究竟是什麼來達到我想要的我不確定。我只希望該文件可用一次,但我認爲它必須存儲在某個地方初始爲用戶下載,然後需要手動清理。

任何幫助或點都會很棒!謝謝。

回答

18

結賬this SO question's accepted solution。用basename($File)替換您自己的文件名並將文件大小($ File)更改爲strlen($your_string)。 (您可能需要使用mb_strlen以防萬一字符串包含多字節字符。)

+9

+1,避免重複,參考其他SO儘可能提出問題。 – 2010-12-06 22:59:38

58

無需存儲任何地方。只需輸出適當內容類型的內容即可。

<?php 
    header('Content-type: text/plain'); 
?>Hello, world. 

如果您希望觸發下載提示,請添加內容處置。

header('Content-Disposition: attachment; filename="default-filename.txt"'); 
22

使用下面的代碼來生成飛文件..

<? //Generate text file on the fly 

    header("Content-type: text/plain"); 
    header("Content-Disposition: attachment; filename=savethis.txt"); 

    // do your Db stuff here to get the content into $content 
    print "This is some text...\n"; 
    print $content; 
?> 
+1

對我來說,它總是帶來網站的源代碼,而不是$ content – 2015-12-16 03:34:08

0
<?php 

    header('Content-type: text/plain'); 
    header('Content-Disposition: attachment; 
      filename="<name for the created file>"'); 
    /* 
    assign file content to a PHP Variable $content 
    */ 
    echo $content; 
?> 
+2

這與其他答案一樣http://stackoverflow.com/a/16440501/2743307 – bibi 2016-03-04 17:53:31