如何在PHP中自动开始下载?

2022-08-30 10:10:42

您需要在 PHP 中添加什么代码才能在访问链接时自动让浏览器将文件下载到本地计算机?

我特别想到的功能类似于下载站点的功能,一旦您单击软件的名称,就会提示用户将文件保存到磁盘?


答案 1

在输出文件之前发送以下标头:

header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($File));
header("Connection: close");

@grom:关于“应用程序/八位字节流”MIME类型很有趣。我不知道这一点,一直只使用“应用程序/强制下载”:)


答案 2

下面是发回 pdf 的示例。

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
readfile($filename);

@Swish我没有找到应用程序/强制下载内容类型来做任何不同的事情(在IE和Firefox中测试)。是否有理由不发回实际的 MIME 类型?

同样在PHP手册Hayley Watson中发布:

如果您希望强制下载和保存文件,而不是呈现文件,请记住,没有“应用程序/强制下载”这样的MIME类型。在这种情况下使用的正确类型是“应用程序/八位字节流”,使用其他任何内容仅依赖于客户端应该忽略无法识别的MIME类型并改用“应用程序/八位字节流”这一事实(参考:RFC 2046的第4.1.4和4.5.1节)。

此外,根据IANA,没有注册的应用程序/强制下载类型。


推荐