强制通过Ajax请求下载excel文件失败

时间:2013-11-11 21:15:00

标签: php excel file http-headers

我正在尝试创建一个可点击的链接;当它被点击它强制下载.xls文件的下载(甚至是另存为选项会很好)。这就是我在下面的内容。

单击链接时,没有php日志错误,它会通过此代码。该文件也存在。我的标题错了吗?

if (@file_exists("/tmp/report/{$php_session_id}.xls")) {
    $filename = "/tmp/report/{$php_session_id}.xls";
    $content_length = filesize($filename);

    header("Pragma: public");
    header("Expires: 0");
    header("Content-type: application/vnd.ms-excel");
    header("Content-length: {$content_length}");
    header("Content-disposition: attachment; filename=\"missing_addresses.xml\"");

    readfile($filename);


}

如果代码正确,可能是服务器被锁定了吗?

另外,我正在测试Chrome for Mac(最新版本)

更新:我使用AJAX就是问题。

1 个答案:

答案 0 :(得分:1)

您无法通过Ajax启动下载;作为正常的Ajax响应,响应将在以太中消失。 (理论上你可以捕获它,但是你将无法将其写入磁盘。)

使用

  

location.href =“source.php”;

<a href='source.php' target='_blank'>

直接将浏览器定向到资源。它会自动检测到它是一个要下载的文件,并启动下载。