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

您需要哪些代码来包含 PHP,以便在看到链接时自动让浏览器将文件下载到本地设备?

我特别想到了与下载网站相当的功能,当您单击软件应用程序的名称时,它会触发客户将文件保存到磁盘?

54
2022-06-07 14:37:29
资源 分享
答案: 2

在输出文件之前发送附加到标题:

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

@格罗姆:关于“应用程序/八位字节 - 流”MIME 类型很有趣。 我不熟悉,一直只使用“应用程序/强制 - 下载”

64
2022-06-07 16:24:02
资源

这是一个返回 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 手册 海莉·沃森 中发布:

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

另外根据 IANA 没有授权的应用程序/强制 - 下载类型。

43
2022-06-07 15:03:17
资源