如何隐藏实际的下载文件夹位置

Nul*_*teя 12 php .htaccess

我想隐藏下载文件夹位置,以便在用户下载文件时无法看到该位置.我认为这可以使用.htaccess文件完成,但我该怎么做?或者,如何用PHP完成这项工作?

ied*_*doc 24

这就是我在PHP中的表现:

<?php
$fakeFileName= "fakeFileName.zip";
$realFileName = "realFileName.zip";

$file = "downloadFolder/".$realFileName;
$fp = fopen($file, 'rb');

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$fakeFileName");
header("Content-Length: " . filesize($file));
fpassthru($fp);
?>
Run Code Online (Sandbox Code Playgroud)

此外,如果您不希望任何人访问该文件位置,请将名为.htaccess您的下载文件夹的文件仅包含以下内容:

deny from all
Run Code Online (Sandbox Code Playgroud)

我稍微改了一下代码.首先,当我说假文件名和真实文件名时,假文件名是下载程序将文件下载的名称,其中真实文件名是服务器上下载文件夹中实际文件的名称.

此外,我检查以确保用户已登录并能够下载该文件.如果他选择下载文件,则在新选项卡中调用PHP文件(使用上面的下载代码),然后在文件末尾我有一行:

exit;
Run Code Online (Sandbox Code Playgroud)

因此,当他点击下载链接时,会在新标签页中快速弹出一个空白页面,然后快速退出并开始下载.

编辑:下载链接看起来像这样:

<a href="simpleDown.php?id=<?php echo $_GET['id']; ?>" target="_blank">Download!</a>
Run Code Online (Sandbox Code Playgroud)

哪里idid下载的数据库,并从上面我找到了进入的下载脚本id,然后获取其真正的文件名和假文件名.但是,您可以在没有数据库的情况下执


Mar*_*cck 5

也许您想要查看 Mod Rewrite,或者使用您的 PHP 脚本来访问文件,只需转到file.php?f=someHash然后使用八位字节流强制用户下载文件即可。

  • +1 - 这将是理想的解决方案。通过 PHP 脚本传递所有下载不仅意味着您可以将数据目录移出公共根目录,而且您还可以在顶部进行安全检查。理想情况下也不要通过文件名引用文件,使用映射到文件的 ID,以便可以随意更改名称而不会破坏现有链接。 (2认同)