Скачать таблицу MySQL в виде файла с разделителями табуляции из WordPress - PullRequest
1 голос
/ 28 марта 2019

У меня есть кнопка в форме WordPress, которая запускает сценарий, поставленный в очередь, с целью создания и загрузки извлечения таблицы MySQL в виде файла с разделителями табуляции на ПК пользователя. Маршрутизация работает отлично. Я могу извлечь данные из таблицы и отформатировать их. Я просто не могу понять, как запустить загрузку, используя PHP-заголовок и директивы ресурсов. Любая помощь будет оценена.

Фрагмент кода ниже:

<?php
function agp_export_csv_table()
{
// =============================================================================
// This function retrieves data from the enquiries table and exports it to a
// tab delimitted excel file
// =============================================================================
    global $wpdb, $bp;
    $query = "SELECT * FROM {$wpdb->prefix}ppl_enquiries";
    $results = $wpdb->get_results($query, ARRAY_A);

    $filename = "Export_excel.xls";
    header("Content-Disposition: attachment; filename=" . $filename);
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Length: " . filesize($filename));

    $file = fopen($filename, 'w');

    $blnHeaderDone = false;

    if (!empty($results)) {
        foreach ($results as $row) {
            if (!$blnHeaderDone) {
                fwrite($file, implode("\t", array_keys($row)) . "\r\n");
                $blnHeaderDone = true;
            }
            fwrite($file, implode("\t", array_values($row)) . "\r\n");
        }
    }
    fclose($file);
    exit();
}

?>

Я ожидаю, что это должно вызвать диалог загрузки в браузере пользователя, но я ничего не получаю и не вижу, чтобы был какой-либо вывод, сгенерированный ни на стороне сервера, ни на локальном ПК. Я не вижу никаких ошибок ни в PHP, ни в JavaScript, которые я вижу.

1 Ответ

0 голосов
/ 28 марта 2019

Вы должны будете использовать заголовки после закрытия файла.

            fclose($fp);

            header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\"");
            header("Content-Type: application/text");
            header("Content-Length: " . filesize($filename));
            readfile($filename);
            header("Connection: close");

            exit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...