【问题标题】:hide a folder path when user downloads a file用户下载文件时隐藏文件夹路径
【发布时间】:2012-10-18 20:45:34
【问题描述】:

我在我的网站上使用 wordpress,我的文件夹中有一些壁纸可供下载。但我不希望用户知道文件夹的确切文件位置。因为有下载订阅。

假设我的文件存储在

http://www.example.com/wp-content/example.folder/awesome.png

现在如何隐藏文件夹名称example.folder 并使用任何假名,下载时会出现该问题。在这方面真的需要很大的帮助。谁能给我一个好方法。我尝试了一些 wordpress 插件,但没有任何帮助。

【问题讨论】:

  • 最安全的做法是将文件放在 apache 不提供服务的目录中(在您的根 Web 文件夹之外),然后让 PHP 打开文件并将其输出到浏览器。您可以为此使用fopen()readfile()

标签: php wordpress .htaccess


【解决方案1】:

PDF 文档示例

$nameOld = "/public_html/wp-content/example.folder/oldnme.pdf";
$nameNew = "newName.pdf" ;
header("Content-Transfer-Encoding: binary");
header('Content-type: application/pdf');
header("Content-disposition: attachment; filename=$nameNew"); //
readfile($nameOld);



编辑 使用不带扩展名的 download.php?img=flowerflower 显示图像名称的图像系统的概念证明

$directory = "/public_html/wp-content/example.folder/";
$types = array("jpg","gif","png");
$ext = null;

if (! isset($_GET['img'])) {
    die("Invalid URL");
}

$nameOld = filter_var($_GET['img'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW);
$nameNew = uniqid(basename($nameOld));

// File the file
foreach ( $types as $type ) {
    if (is_file($nameOld . "." . $type)) {
        $ext = $type;
        break;
    }
}

if ($ext == null) {
    die("Sorry Image Not Found");
}
$nameOld .= "." . $ext;
$type = image_type_to_mime_type(exif_imagetype($nameOld));

header("Content-Transfer-Encoding: binary");
header('Content-type: ' . $type);
header("Content-disposition: attachment; filename=$nameNew"); //
readfile($nameOld);

【讨论】:

  • 感谢您的回答,但我必须把这段代码放在哪里,如果有多个文件但同一个文件夹怎么办。我想更改文件夹路径或隐藏它或伪造它。您的示例适用于一个文件
  • 只需创建一个download.php,它会在您访问该页面时下载图像
  • 但是就像我有多个壁纸,当用户点击其中任何一个时,特定的文件就会被下载
  • 在同一个文件夹中。当我点击任何壁纸时,上述示例链接之一被启动并下载壁纸,如何用这个来包装你的代码?
  • @ParamVeer 你得到了答案——现在你应该:1)接受它,2)做“肮脏的工作”——不要接受这里的人“为你工作”!跨度>
猜你喜欢
  • 2018-04-05
  • 2016-07-20
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
相关资源
最近更新 更多