我正在编写一个基于数据库信息下载csv文件的基本脚本, 在我的仪表板/ index.php中,我使用GET并切换到包含页面 所以当我点击链接dashboard.php?link = export.php 我有一个包含所有数据的表,我有一个链接,我可以下载我的csv文件,我的问题是,当我点击export.csv,我有一个文本输出而不是下载文件,所以我把这些代码:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$filename}.csv");
header("Pragma: no-cache");
header("Expires: 0");
但我总是以文本格式看到内容并出现错误
Warning: Cannot modify header information - headers already sent by (output started at /home/*/public_html/dev/dashboard/index.php:78) in /home/*/public_html/dev/dashboard/component/export.php on line 39
所以我问我怎样才能解决这个问题,我可以在export.php中删除索引的标题并设置一个新的也可以下载文件或者extacly 也许我需要在export.php中更改Content-Type为text / csv 但是alrady发送了text / html。 请帮忙解决这个问题 谢谢
答案 0 :(得分:3)
正如您所看到的,index.php文件中已经发送了一些内容(打印),其中包含您的export.php文件。
确保您没有在标题之前打印任何内容。在某些情况下,可能是开放<?php
标记之间的空格或类似的标记。顺便说一下,转换你所拥有的包含案例。
其他方法是尝试在export.php
中的语句之前使用header_remove();
答案 1 :(得分:0)
在我的情况下,我没有在标题之前添加任何内容我从数据库获取记录。 如果您有下载csv的功能,请在函数顶部添加以下标题,如:
function exportCsv($date) {
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
.
.
.
.
}