我想将整个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);
?>
答案 0 :(得分:1)
我看到的是您终于将文件复制到其他文件,并且最后不要刷新该文件。
<?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);
答案 1 :(得分:1)
您正在将输出数据写入服务器上名为demo.csv
的文件,并且正在浏览器中下载名为demo.csv
的文件,但是它们不是同一文件。
如果要在浏览器中下载文件,则需要PHP输出文件的内容。
您可以使用readfile
,或仅在读取原始输入文件时使用echo
来执行此操作(并且永远不要将本地demo.csv
保存在服务器磁盘上)。