创建文本文件,并让用户选择下载PHP

时间:2018-04-18 22:13:37

标签: php mysql

我需要为用户提供将查询结果保存在文本文件中并下载的选项。

现在,我有这段代码:

 while ($row = mysqli_fetch_array($resulta)){
    echo "<tr>";
    echo "<td class='cell0'><a href='Visualizar_Disciplina.php?nome=" .$row['nome'] . "'>" . $row['nome'] . " </a></td>";
    echo "<td class='cell0'>" . $row['nomeprofessor'] . "</td>";
    echo "<td class='cell0'>" . $row['creditos'] . "</td>";
    echo "</tr>";
    } 

我不知道如何在服务器中创建文本文件,然后当用户点击按钮时,文件将被下载。

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

你基本上有两种选择。

备选方案1

将文件存储在服务器上,并确保用户可以通过某个URL访问原始文件。您可能希望有一些清理文件的逻辑,因为每次新下载都会在服务器上添加一个新文件,最终会耗尽空间。

<?php
$uri = tempnam("/dir/for/files");
$myfile = fopen($uri, "w") or die("Unable to open file!");

while ($row = mysqli_fetch_array($resulta)){
   $out  = "<tr>\n";
   $out .= "<td class='cell0'><a href='Visualizar_Disciplina.php?nome=" .$row['nome'] . "'>" . $row['nome'] . " </a></td>\n";
   $out .= "<td class='cell0'>" . $row['nomeprofessor'] . "</td>\n";
   $out .= "<td class='cell0'>" . $row['creditos'] . "</td>\n";
   $out .= "</tr>\n";
   fwrite($myfile, $out);
}
fclose($myfile);
?>

现在文件已写入服务器,您可以将客户端指向与该文件对应的网址。

备选方案2

将download.php文件放在某个“生成”要动态下载的内容的位置。为了让您的用户的浏览器接受该文件作为下载而不是作为可显示的内容,您需要在download.php的顶部设置适当的标题

 <?php
 header('Content-type: text/plain');
 header('Content-Disposition: attachment; filename="filename.txt"');
 header('Expires: 0');
 header('Cache-Control: must-revalidate');
 header('Pragma: public');

 while ($row = mysqli_fetch_array($resulta)){
    echo "<tr>\n";
    echo "<td class='cell0'><a href='Visualizar_Disciplina.php?nome=" .$row['nome'] . "'>" . $row['nome'] . " </a></td>\n";
    echo "<td class='cell0'>" . $row['nomeprofessor'] . "</td>\n";
    echo "<td class='cell0'>" . $row['creditos'] . "</td>\n";
    echo "</tr>\n";
 }
 exit;
 ?>