Как скопировать php-файл в csv-файл и скачать его? - PullRequest
0 голосов
/ 28 января 2019

Я хочу скопировать весь файл php в файл csv и загрузить его, но полученный мной файл demo.csv пуст.Почему я получаю пустой файл?

Данные в файле php хранятся в каждой строке.

<?php
// output headers so that the file is downloaded rather than displayed
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="demo.csv"');

// do not cache the file
header('Pragma: no-cache');
header('Expires: 0');

$handle = fopen("caldataprog.php", "r"); //fileurl
$lines = [];
if (($handle = fopen("caldataprog.php", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
        $lines[] = $data;
    }
    fclose($handle);
}
$fp = fopen('demo.csv', 'w');
foreach ($lines as $line) {
    fputcsv($fp, $line);
}
fclose($fp);
?>

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вы записываете выходные данные в файл с именем demo.csv на своем сервере и загружаете файл с именем demo.csv в браузер, но они не совпадают с файлом .

Если вы хотите загрузить файл в браузере, вам нужно, чтобы PHP выводил содержимое файла.

Вы можете сделать это, используя readfile или просто используяecho во время чтения исходного входного файла (и никогда не сохраняйте локальный demo.csv на диске сервера).

0 голосов
/ 28 января 2019

Я вижу, что вы, наконец, копируете файл в другой и не очищаете этот последний.

<?php

$source = 'caldataprog.php'; // Presuming it contains raw CSV
$destination = 'demo.csv';

copy($source, $destination);

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="demo.csv"');
readfile($destination); // Send file to user

Если caldataprog.php генерирует CSV и вы хотите скопировать результат, вы можете сделать:

$source = 'http://yourwebsite.net/caldataprog.php';
$destination = 'demo.csv';
copy($source, $destination);
...