如何使用PHP强制文件下载

当你想到它时, 网络浏览器是复杂编程的惊人壮举。 它们是我们日常生活中的一部分工具 - 用于检查朋友和家人的状态,与那些人交流,购物,观看视频,照顾我们的金融生活等等更多。 正如浏览器在我们生活中的流行一样,现实是大多数人不明白它们的真正用处。

幕后

浏览器在幕后执行的一件事是尝试在浏览会话期间完成一个人所做的所有点击操作。 这意味着越来越多的文件类型可以直接在Web浏览器中打开以供查看。

大多数情况下,这是一件好事,因为单击您想要阅读的文档的链接可能会非常令人沮丧,然后必须等待它下载并最终在您的计算机上打开。 当您等待下载时,这种沮丧达到了下一个级别,只是发现您没有正确的程序来打开文档。 现在,这种情况很少发生,因为浏览器确实直接显示文档。 例如,PDF文件默认不会下载。 相反,它们直接显示在Web浏览器中,类似于网页的显示方式。

如果你有一个你希望人们下载的文件,而不是直接在网页浏览器中查看它?

如果它是一个HTML文件或一个PDF ,你不能只发布一个链接到该文件,因为(正如我们刚刚所述),一个网络浏览器会自动打开这些文件,并以内联方式显示它们。 为了将这些文件下载到个人的计算机上,您需要使用PHP来做一些欺骗手段。

PHP允许您更改正在编写的文件的HTTP标头。

这个过程使得你可以强制下载文件,通常浏览器会在同一个窗口中加载。 对于希望客户下载而不是直接从浏览器在线使用的PDF,文档文件,图像和视频文件,这非常适用。

您需要在托管文件的Web服务器上安装PHP,要下载的文件以及相关文件的MIME类型

这个怎么做

  1. 上传您想要下载到您的Web服务器的文件。 例如,假设您有一个PDF文件,您希望人们在点击链接时下载它。 您将首先将该文件上传到您网站的托管环境。
    huge_document.pdf
  2. 在您的网页编辑器中编辑一个新的PHP文件 - 为了便于使用,我们建议将它命名为与下载文件相同的名称,只能使用扩展名.php。 例如:
    huge_document.php
  3. 在文档中打开PHP块:
    <?PHP
  4. 在下一行中,设置HTTP标头:
    标题(“Content-disposition:attachment; filename = huge_document.pdf”);
  5. 然后设置文件的MIME类型:
    标题(“Content-type:application / pdf”);
  6. 指向您要下载的文件:
    ReadFile的( “huge_document.pdf”);
  7. 然后关闭PHP块并保存文件:
    ?>
  1. 你的PHP文件应该是这样的:
    <?PHP
    标题(“Content-disposition:attachment; filename = huge_document.pdf”);
    标题(“Content-type:application / pdf”);
    ReadFile的( “huge_document.pdf”);
    ?>
  2. 链接到您的PHP文件作为网页的下载链接。 例如:
    下载我的巨大文档(PDF)

文件中的任何位置不得有空格或回车符 (分号后除外)。 空白行会导致PHP默认为MIME类型text / html,并且您的文件不会下载。