一尘不染

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

php

我想隐藏下载文件夹的位置,以便用户下载文件时看不到该位置。我认为可以使用.htaccess文件完成此操作,但是我该怎么做?另外,如何用PHP完成呢?


阅读 324

收藏
2020-05-29

共1个答案

一尘不染

这是我在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);
?>

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

deny from all

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

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

exit;

因此,当他单击下载链接时,空白页会迅速在新选项卡中弹出,然后迅速退出并开始下载。

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

<a href="simpleDown.php?id=<?php echo $_GET['id']; ?>" target="_blank">Download!</a>

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

2020-05-29