普通文件下载和PHP驱动下载有什么区别?

时间:2011-06-02 07:10:50

标签: php download

直接从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脚本处理此任务?

与文件直接链接相同的问题

3 个答案:

答案 0 :(得分:3)

与客户无关,没有。

服务器的不同之处在于,您可以在启动下载之前充分利用PHP来执行某些操作,但如果Apache直接处理下载则不是这种情况。这也意味着需要在下载开始之前加载和执行整个PHP,并且它将占用一个PHP进程,直到下载完成。

答案 1 :(得分:3)

如果 您的“正常”下载会提供那些确切的标题,那么

但是,许多事情可能导致服务器决定发送不同的标头:

  • 如果 gzip 已开启(浏览器接受)
  • 如果request发送了 If-Modified-Since 标头且内容未被修改
  • 如果服务器决定发送上次修改时间
  • 如果服务器有其他类型的cache-control logic

答案 2 :(得分:1)

我认为这也可以让您为通常禁止用户直接访问的资源创建下载。您似乎可以将此用于仅存在于内存中的文件,而不必先将其写入磁盘。