У меня проблема, мое приложение работает следующим образом.
Первое эхо пользователя, которое начало генерации файла csv.
например. echo 'Building of csv file started';
затем я создаю файл csv.
Теперь я хочу, чтобы файл был загружен, и это работает отлично.
это мой код
header('Content-Type: application/csv'); header('Content-Disposition:attachment;filename='.$year.'_'.$month.'_'.'export.csv'); header('Pragma: no-cache'); echo readfile($myFile);
Нет первого эха «Создание файла csv start» входит в CSV-файл, и я не знаю, как его исключить.
Решение очень просто. Поскольку вам нужны два разных типа заголовков, вам нужно создать 2 разных страницы.
На первой странице отображается «Создание CSV-файла» и содержит iframe со второй страницей и вторую страницу с вашим реальным CSV-файлом и заголовком вложения.
Вы не можете заставить что-либо загружать через HTTP. Это не работает HTTP. Если вы хотите что-то загрузить, то оно должно быть активом в ответ на запрос пользователя. Это означает, что пользователь должен что-то сделать, чтобы вызвать запрос на загрузку явно или загрузка должна быть в ответ на запрос AJAX.
Все, что вы эхо собираетесь идти в CSV. Вы не можете эхо и выводить CSV в том же скрипте.
Пользователь находится на вашей странице – они нажимают ссылку «build CSV». Затем, используя некоторые очень, очень простые JS, вы можете показать сообщение / модальное / всплывающее сообщение «Создание файла csv start …» на серверной стороне PHP, вы можете удалить это эхо с страницы, которая фактически генерирует CSV и пользователю будет предложено указать файл.