Создайте текстовый файл и предоставьте пользователю возможность загрузить его PHP

0

Мне нужно предоставить пользователю возможность сохранить результат запроса в текстовом файле и загрузить его.

Теперь у меня есть этот код:

 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>";
    } 

И я не знаю, что делать, чтобы создать текстовый файл на сервере, а затем, когда пользователь нажал кнопку, файл будет загружен.

Как я могу это сделать?

Спасибо!

  • 0
    Я дал вам два варианта в своем ответе, но мне не ясно, хотите ли вы отформатировать файл * .txt по-другому, поэтому сейчас это будет файл * .txt, содержащий html. Это нормально?
  • 0
    это нормально!! спасибо за помощь, я сделал это правильно
Теги:

1 ответ

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);
?>

Теперь файл записывается на сервер, и вы можете указать своему клиенту на URL-адрес, соответствующий этому файлу.

Альтернатива 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;
 ?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню