Как поместить кнопку загрузки на сайт, чтобы получить CSV таблицы Query? - PullRequest
0 голосов
/ 24 декабря 2009

Как поместить кнопку загрузки на сайт, чтобы получить CSV таблицы Query?

В настоящее время я использую SELECT * INTO OUTFILE, чтобы сделать файл CSV на сервере HD и нормально, кроме ...

Я хочу создать CSV, как сейчас, но я хочу, чтобы «OUTFILE» был сохранен на клиентском компьютере, когда они нажимают «Загрузить».

<?php
// Create new file name for file to be created 
$csvfilename = "/dropbox/consolodated-" . date("Y-M-d_H-i-s") . ".csv";


mysql_query ("SELECT * INTO OUTFILE '$csvfilename' FIELDS TERMINATED BY ',' FROM people ");
?>

<H2>Done - File created - Now download it from FTP site.</H2>

Ответы [ 4 ]

2 голосов
/ 24 декабря 2009

Решение этой проблемы может быть таким:

  • Сначала вы сохраняете CSV-файл на сервере.
  • тогда получи свой путь
  • и, наконец, создайте тег привязки с его путем для загрузки, например:

_

 <a href="pathtoyourcsvfile.csv">Download</a>
0 голосов
/ 24 декабря 2009

Простой, вот пример кода:

$csv_filename = "/dropbox/consolodated-" . date("Y-M-d_H-i-s") . ".csv";

Download($csv_filename);

А вот и функция загрузки:

function Download($path, $speed = null)
{
    if (is_file($path) === true)
    {
        set_time_limit(0);

        while (ob_get_level() > 0)
        {
            ob_end_clean();
        }

        $size = sprintf('%u', filesize($path));
        $speed = (is_null($speed) === true) ? $size : intval($speed) * 1024;

        header('Expires: 0');
        header('Pragma: public');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Content-Type: application/octet-stream');
        header('Content-Length: ' . $size);
        header('Content-Disposition: attachment; filename="' . basename($path) . '"');
        header('Content-Transfer-Encoding: binary');

        for ($i = 0; $i <= $size; $i = $i + $speed)
        {
            echo file_get_contents($path, false, null, $i, $speed);

            flush();
            sleep(1);
        }

        exit();
    }

    return false;
}

С Рождеством тебя! =)

0 голосов
/ 24 декабря 2009

Добавьте в конце форму POST, которая включает в себя скрытое поле, содержащее имя файла (но НЕ путь!) Файла для загрузки. Затем откройте страницу, которую он отправляет, чтобы прочитать переменную и предложить файл для загрузки. Не забудьте включить буферизацию вывода и периодически очищать его, чтобы форма не отображалась до тех пор, пока запрос не будет завершен.

0 голосов
/ 24 декабря 2009
...