php
  • file
  • 2009-08-06 107 views 3 likes 
    3

    我有一個小腳本,它從DB中讀取數據,將它們排列並保存爲.txt文件。 最後,用戶被重定向到該文件。 現在,如何實現當用戶被重定向到.txt文件下載框?強制用戶下載.txt(php,file.txt)

    <?php 
    // Preden zacnemo, dobi novico iz baze! 
    $MOD_NEWS_SAVETXT_getnews = mysql_query("SELECT * FROM NEWS WHERE NEWSid = '{$_GET['id']}'") or die(mysql_error()); 
    // Nardimo while in priredimo vsebino iz baze spremenljivkam! 
    while ($MOD_NEWS_SAVETXT_NEWSRESULT = mysql_fetch_array($MOD_NEWS_SAVETXT_getnews)) { 
        $MOD_NEWS_SAVETXT_FILE_name = $MOD_NEWS_SAVETXT_NEWSRESULT['NEWStitle'] . ".txt"; 
        echo $MOD_NEWS_SAVETXT_FILE_name; 
        $MOD_NEWS_SAVETXT_FILE_handle = fopen($MOD_NEWS_SAVETXT_FILE_name, 'w') or die("Ne morem brati/ustvariti datoteke!"); 
        fwrite($MOD_NEWS_SAVETXT_FILE_handle, $MOD_NEWS_SAVETXT_NEWSRESULT['NEWStext']); 
        fclose($MOD_NEWS_SAVETXT_FILE_handle); 
        header("Location: ./" . $MOD_NEWS_SAVETXT_FILE_name .""); 
    } 
    ?> 
    
    +0

    http://stackoverflow.com/questions/985083/的重複打開下載對話框與PHP(WH ich有一個很好的答案) – Quentin 2009-08-06 13:58:30

    回答

    5

    要強制文件下載,您必須發送HTTP標頭,告訴瀏覽器將該文件視爲下載文件。這是覆蓋文件的內容類型。

    http://en.wikipedia.org/wiki/List_of_HTTP_headers

    基本上,當您的Web服務器檢索瀏覽器請求的文件時,它首先檢查文件擴展名和猜測的MIME類型。然後它創建HTTP響應,並將Content-Type頭插入它猜到的MIME類型的值。

    您可以讓PHP明確設置文件的內容類型。

    該示例已在上面給出。

    header("Content-type: application/force-download"); 
    

    header("Content-type: application/octet-stream"); 
    

    的下載,您還可以設置內容處置和內容傳輸編碼HTTP響應頭。

    這些在MIME規範中定義:http://www.faqs.org/rfcs/rfc1521.html

    這也是很好定義內容長度,因爲這可以讓瀏覽器給用戶下載進度條。

    您可能還想查看使用範圍標頭以允許請求分部分。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

    +0

    我修改了腳本,以便用戶重定向到網站downloadtxt.php。 一切正常,用戶正在下載FILENAME insted。在服務器上的文件存儲好(文件名.txt),而從downloadtxt.php處理的文件作爲FIRSTWORD.txt下載(我猜頭或其他修整了FIRSTWORD和SECONDWORD之間的空白空間 任何想法如何獲得正確的名稱filename.txt,因爲它存儲在服務器上? 例如: fopen創建一個名爲NEWStitle的文件=>我的第一個news.txt downloadtxt.php使一個文件=> My.txt(在下載框實際上只有「我的」 ) 感謝您的幫助! – AnzeT 2009-08-06 15:26:07

    +0

    將它添加到引用中時,將它添加到HTTP標頭。 – bucabay 2009-08-10 20:46:50

    6
    +0

    前兩個鏈接處理二進制文件而不是文本文件。 – 2012-08-23 14:21:49

    相關問題