headers 已发送,导出 csv,无法下载文件
headers already sent , export csv , can't download the file
我正在编写一个基本脚本来根据数据库信息下载 csv 文件,
在我的 dashboard/index.php 中,我使用 GET 并切换到包含页面
所以当我点击 link dashboard.php?link=export.php
我有一个包含所有数据的 table,我有一个可以下载我的 csv 文件的 link,我的问题是当我单击 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 中索引的 header 并在那里设置一个新的索引来下载文件或什么 extacly
也许我需要将 export.php 中的 Content-Type 更改为 text/csv
但已经发送 text/html 。
请帮助解决这个问题
谢谢
如您所见,在您的 index.php 文件中已经发送到输出(打印)的内容包括您的 export.php 文件。
确保您没有在页眉之前打印任何内容。在某些情况下,可能是 space 开始 <?php
标签之间或类似的东西。顺便说一句,请注意您拥有的 switch 包含案例。
其他方法是尝试在 export.php
中的语句之前使用 header_remove();
不要在 header 之前添加任何内容,在我的例子中,我正在从数据库中获取记录。
如果您有下载 csv 的功能,请在函数顶部添加以下 header,例如:
function exportCsv($date) {
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
.
.
.
.
}
我正在编写一个基本脚本来根据数据库信息下载 csv 文件, 在我的 dashboard/index.php 中,我使用 GET 并切换到包含页面 所以当我点击 link dashboard.php?link=export.php 我有一个包含所有数据的 table,我有一个可以下载我的 csv 文件的 link,我的问题是当我单击 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 中索引的 header 并在那里设置一个新的索引来下载文件或什么 extacly 也许我需要将 export.php 中的 Content-Type 更改为 text/csv 但已经发送 text/html 。 请帮助解决这个问题 谢谢
如您所见,在您的 index.php 文件中已经发送到输出(打印)的内容包括您的 export.php 文件。
确保您没有在页眉之前打印任何内容。在某些情况下,可能是 space 开始 <?php
标签之间或类似的东西。顺便说一句,请注意您拥有的 switch 包含案例。
其他方法是尝试在 export.php
中的语句之前使用header_remove();
不要在 header 之前添加任何内容,在我的例子中,我正在从数据库中获取记录。 如果您有下载 csv 的功能,请在函数顶部添加以下 header,例如:
function exportCsv($date) {
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
.
.
.
.
}