php - 试图生成一个 php 下载链接。文件名不会设置

标签 php header download readfile

你好,我正在尝试为我的程序生成一个由 php 驱动的下载链接,我复制并粘贴了一些我以前使用过的旧代码,除了 2 个问题外,它似乎仍然可以正常工作。

问题 1:无论怎样,它总是将文件下载为 link.php 而不是文件名

问题 2:文件大小没有发送到浏览器(不是很关心这个)

主要是我需要知道我在设置文件名时做错了什么,下面是我的代码:

$file = $_GET['file'].'.exe';
if ($_GET['DL'] == "GO") {
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers 
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename('MIRROR/'.$file) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize('MIRROR/'.$file));
ob_clean();
flush();
readfile('MIRROR/'.$file);
die();
}

最佳答案

尝试去掉尾随的;:

header('Content-Disposition: [..snip...] . basename($file) . '";');
                                                               ^--- here

关于php - 试图生成一个 php 下载链接。文件名不会设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753075/

相关文章:

unity-game-engine - 使用 [Header ("text")] header 是否有限制?

java - servlet 下载 pdf 时,下载过程不可见

vba - 使用 Excel VBA 从当前 Internet Explorer 浏览器 session 下载 PDF?

php - PDO fatal error : Call to a member function prepare() on a non-object

php - 如何将.frm文件传输到表?

php - 遍历 PDO 查询的结果

asp.net - 通过 HTTP header 将值从一个 ASP.NET 应用程序传递到另一个

c++ - cuda 文件组织的有效方式 : . cpp .h .cu .cuh .curnel 文件

php - 是否可以使用单个 mysql 查询在两个不同的表中插入数据而无需事务?

来自 thispersondoesnotexist.com 的 Curl 失败,结果为空