标头已经发送 - 从PHP中的函数下载文件

时间:2012-09-18 16:32:01

标签: php mysql header

我正在尝试创建一个允许用户下载文件的功能。当我单击按钮下载文件时,会调用此函数,我收到“无法修改标题信息 - 标题已经发送”错误。

据我所知,“已发送的标头......”错误是由空格引起的,但我似乎找不到任何东西。有什么我没有考虑到的吗?这不是它所在页面上唯一的功能。我是否必须以特殊方式加载页面?

function serveFile($fileID){
    $sql = mysql_query("select filename from files where id = '$fileID'");
    $file = mysql_fetch_array($sql);

    header('Content-type: text/plain');

    header('Content-Disposition: attachment; filename="'.$file['filename'].'" ');

    readfile('/user_files/'.$fileID.' ');
}

更新 - 我得到了它的工作,感谢您的提示。我将函数调用移到了页面顶部。

1 个答案:

答案 0 :(得分:2)

检查HTML文件中是否有空格。

在开始为这个问题吐出标题之前,只需要一个空格。

有关详细信息,请参阅此页: How to fix "Headers already sent" error in PHP