Я работаю над формой, которая создает файл CSV и затем должна отобразить ссылку для загрузки. Он работает хорошо, но не выводит сообщение об успехе из-за завершения буфера.
Файл, который генерирует файл CSV, и эхо, которое не отображается, но должно отображаться:
if(isset($_POST['createExport'])) {
$export = new MyFlight_CreateCSV();
$export->createCSV();
echo "Report created!";
}
Эта проблема происходит после следующего кода из объекта MyFlight_createCSV (), который генерирует CSV-файл и нуждается в ob_end_clean () в начале и ob_end_flu sh () в конце.
ob_end_clean();
$fh = @fopen( $filename, 'w' );
fprintf( $fh, chr(0xEF) . chr(0xBB) . chr(0xBF) );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Content-Description: File Transfer' );
header( 'Content-type: text/csv' );
fputcsv( $fh, $header_row );
foreach ( $data_rows as $data_row ) {
fputcsv( $fh, $data_row );
}
fclose( $fh );
ob_end_flush();
Путем деактивации функции ob_end_clean (); и ob_end_flu sh (); это все еще работает, но получает предупреждение (не может изменить информацию заголовка). Чтобы продолжить выводить сообщение об успешном завершении после генерации CSV, я попробовал несколько вещей, таких как ob_start, перенаправить на другую страницу и т. Д. c. но ничего не работает и вывод остается пустым. У кого-нибудь есть идеи?
С уважением,
Лукас