通过php页面中的js强制下载文本

时间:2012-09-13 19:57:19

标签: php javascript download

我正在尝试自动下载一个txt文件(即时创建)。 以下代码无效,因为用户被重定向到显示txt的页面而不是下载它。 相反,我想要的是单击表单(代码的顶部)会导致页面刷新(发生这种情况),然后下载文件。如果将文件格式更改为rtf,例如,我可以下载它,但不能下载。

=================不工作代码==================

      echo "
      <form name=\"fn\" action=\"index.php?option=com_comp\" method=\"post\">
      // more not related stuff
      <input type=\"image\" src=\"".JURI::root().
      "components/com_comp/images/download_icon.png\" .
      "\" name=\"downloadaddresses\">DOWNLOAD_RESULTS
      // more not related stuff";


      if($_POST['downloadaddresses_x']!=0) {

            $myfilename = "tmp/results.txt";
            $fh = fopen($myfilename, 'w');

            $recipients = $_POST['recipients'];
            $semicolon_separated = implode(";", $recipients);
            fwrite($fh, $semicolon_separated);
            fclose($fh);

            echo "<a href=\"".$myfilename."\" id=\"downloadlink\">
            This download should start automatically!</a>";
            echo "<script type=\"text/javascript\">
                     location.href = document.getElementById('downloadlink').getAttribute('href');
                </script>";
        }           

2 个答案:

答案 0 :(得分:4)

需要在PHP文件的标题中指定内容类型

header('Content-Type: text/plain'); 
header('Content-Disposition: attachment; filename="your_filename_here.txt"');
echo file_get_contents('path_to_file.txt');

答案 1 :(得分:0)

标题,你知道了。

header("Content-type: text/plain")