使用php初始化下载,是否可以查看下载链接


Initiating a download with php, is it possible to view the download link?

我试图隐藏我的产品文件的位置,所以我在购买后启动下载服务器端PHP头。是否有可能发现文件的url ?

使用以下代码

if (file_exists($_SERVER['DOCUMENT_ROOT']."/files/$file")) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}

像现在一样流式传输结果,源对客户端是隐藏的。输出似乎来自php脚本,然后

浏览器可以选择是否遵循header('Location: ');,所以是的,它们可以。

我建议将它们流式传输给用户,使用readfile();

这个问题的答案是生成一个唯一的绑定到文件的散列,并将它们存储在一个表中。然后用该哈希将用户重定向到像/download/n43j234jb3434这样的文件。这个散列是一次性使用的。您可以使用readfile()

下载该文件

使用位置标头,您基本上是告诉客户端文件的位置。另一种选择是让php将文件提供给客户端,而不是重定向它们。