【发布时间】:2013-11-11 21:15:00
【问题描述】:
我正在尝试创建一个可点击的链接;当它被点击时,它会强制下载.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,这就是问题所在。
【问题讨论】:
-
“它通过这段代码”是什么意思?究竟会发生什么?
-
我的意思是没有阻止它执行的错误。我在最后做了一个
echo声明,它“通过”到那个echo。 -
您不能通过 Ajax 启动下载,它只会在以太中消失。请改用
location.href = "source.php";。 -
@KickingLettuce 是的。或者,
<a href='source.php' target='_blank'>应该完全不使用任何 JavaScript 也有相同的效果 -
在发送文件后调用 exit(0) 总是一个好主意,以防止其他任何东西进入缓冲区。
标签: php excel file http-headers