Вот что я пытаюсь сделать. У меня есть серия отчетов, которые также хотят иметь возможность загружать в виде текстовых файлов с разделителями-запятыми. Я прочитал кучу страниц, где люди говорят, что просто отгоняют результаты, а не создают файл, но когда я пытаюсь, он просто выводит на страницу, на которой они находятся.Создайте и скачайте текстовый файл с помощью php
У меня есть это в виде каждого отчета
Export File<input type="checkbox" name="export" value="1" />
Так на пост я могу проверить, если они пытаются экспортировать файл. Если это так, я пытался это сделать:
if($_POST['export'] == '1')
{
$filename = date("Instructors by DOB - ".$month) . '.txt';
$content = "";
# Titlte of the CSV
$content = "Name,Address,City,State,Zip,DOB\n";
for($i=0;$i<count($instructors);$i++)
$content .= ""; //fill content
fwrite($filename, $content);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);
}
В основном страница обновляется, но файл не загружается для загрузки. Может ли кто-нибудь указать, что мне не хватает?
EDIT Я думаю, что я был не совсем ясен. Это не на странице, которая только создает и загружает файл, это на странице, которая также отображает отчет. Поэтому, когда я устанавливаю exit(); после файла read остальная страница загружается пустым. Мне также нужно отобразить отчет на этой странице. Я думаю, что это также может иметь отношение к тому, почему он не загружается, потому что эта страница уже отправила информацию заголовка.
Попробуйте закрыть файл после того, как выписывать ему .. Значит ли это помощь? – SuperSaiyan
Создан ли файл? Кроме того, вы должны выйти из скрипта после 'readfile()'. – nickb
Почему бы просто не создать ссылку на загружаемый контент на той же странице, что и на дисплее? Таким образом, они могут беспрепятственно просматривать отчет и выбирать, хотят ли они загрузить его, а не сначала решить, хотите ли они загрузить его, прежде чем просматривать его. Проактивный или реактивный. Это решит проблему с заголовками. – aowie1