0

我正在尝试创建一个可点击的链接;当它被点击时,它会强制下载一个文件(甚至是另存为选项也不错).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);


}

如果代码正确,是否可能是服务器被锁定而无法执行此操作?

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

更新:我使用了 AJAX,这是问题所在。

4

1 回答 1

1

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

采用

location.href = "source.php";

或者

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

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

于 2013-11-11T21:40:48.107 回答