直接从Web服务器下载文件与通过使用这些标头的PHP脚本下载相同文件之间有区别吗? (假设此处的所有变量都包含正在下载的文件的正确值。)
header('Content-Description: File Transfer');
header('Content-Type: ' . $mimeType);
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
在阅读此处的讨论后,我想更改问题:
在服务器上为可以下载的用户提供文件。
什么&我们何时需要通过PHP脚本处理此任务?
与文件直接链接相同的问题
答案 0 :(得分:3)
与客户无关,没有。
服务器的不同之处在于,您可以在启动下载之前充分利用PHP来执行某些操作,但如果Apache直接处理下载则不是这种情况。这也意味着需要在下载开始之前加载和执行整个PHP,并且它将占用一个PHP进程,直到下载完成。
答案 1 :(得分:3)
如果 您的“正常”下载会提供那些确切的标题,那么 否 强>
但是,许多事情可能导致服务器决定发送不同的标头:
答案 2 :(得分:1)
我认为这也可以让您为通常禁止用户直接访问的资源创建下载。您似乎可以将此用于仅存在于内存中的文件,而不必先将其写入磁盘。