【发布时间】:2014-04-23 11:15:17
【问题描述】:
我试图通过 PHP 进行“强制下载”,但得到的只是奇怪的符号。
我尝试添加标题(“application/typeofmyfile”)和标题(“Content-Disposition”)...以及来自这里的许多其他帖子的许多其他内容,但没有
我有这个:
$f_location = "path/myfile.nl2pkg";
$f_name = "myfile.nl2pkg";
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$f_name); //Here also tried basename($f_name) but nothing
header("Content-Length: ".filesize($f_location));
header("Content-Transfer-Encoding: binary");
我这样做是因为当用户点击“下载”按钮时,我使用 ajax 将他发送到页面以强制下载,将一些数据放入数据库中,然后刷新主页。
这是我第一次处理标题,对于我阅读的内容,不知道我是否做错了什么。
【问题讨论】:
-
您的代码应该可以在干净的页面中运行。尝试运行 ajax,执行您必须做的事情,然后使用该代码打开一个新的空白页面,它应该可以运行。
-
使用 header_sent 检查天气是否已经发送de1.php.net/manual/en/function.headers-sent.php的标题
-
好的,为了尝试,我在浏览器中添加了一个新选项卡,并将所有变量放入标题中,下载工作正常。去做你问我的事,我会告诉你的。还要检查那个页面,谢谢。
-
正如@rennyrocha 所建议的那样。您不能通过 AJAX 请求下载文件。您必须向服务器发出正常请求。当您返回您在此处使用的标题时,用户将看到一个下载框,他们将留在原始页面上。
-
嗨,使用 Ajax 我只将变量传递给页面以强制下载(以及来自文件的 id 和用户将其添加到数据库),并使用 thouse 变量获取文件。正如rennyrocha 所说,我已经完成了ajax,然后使用location.href 打开了一个新链接并且工作正常。还将检查之前发送的标头。谢谢大家。
标签: php force-download