Php 用户下载文件时隐藏文件夹路径

Php 用户下载文件时隐藏文件夹路径,php,wordpress,.htaccess,Php,Wordpress,.htaccess,我正在使用wordpress作为我的网站,我的文件夹中有一些壁纸供下载。但我不想让用户知道文件夹的确切文件位置。因为有一个下载订阅 假设我的文件存储在 http://www.example.com/wp-content/example.folder/awesome.png 现在,如何隐藏文件夹名示例。文件夹并使用下载时显示的任何假名称。在这方面真的需要很大的帮助。谁能给我推荐一个好方法吗。我尝试了一些wordpress插件,但没有得到任何帮助。PDF文档示例 $nameOld = "/publ

我正在使用wordpress作为我的网站,我的文件夹中有一些壁纸供下载。但我不想让用户知道文件夹的确切文件位置。因为有一个下载订阅

假设我的文件存储在

http://www.example.com/wp-content/example.folder/awesome.png
现在,如何隐藏文件夹名
示例。文件夹
并使用下载时显示的任何假名称。在这方面真的需要很大的帮助。谁能给我推荐一个好方法吗。我尝试了一些wordpress插件,但没有得到任何帮助。

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=flower
flower
显示图像名称,证明图像系统的概念

$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);
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=flower
flower
显示图像名称,证明图像系统的概念

$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);

最安全的做法是将文件放在apache不提供服务的目录中(根web文件夹之外),然后让PHP打开文件并将其输出到浏览器。您可以使用
fopen()
readfile()
进行此操作。最安全的方法是将文件放在apache不提供服务的目录中(根web文件夹之外),然后让PHP打开文件并将其输出到浏览器。您可以使用
fopen()
readfile()
进行此操作。谢谢您的回答,但我必须将此代码放在何处,如果有多个文件但有一个相同的文件夹,该怎么办?我想更改文件夹路径或隐藏或伪造文件夹路径。您的示例是一个文件Just crate a
download.php
它会在您访问该页面时下载图像,但就像我有多张墙纸一样,当用户单击其中任何一张时,特定的文件会在同一文件夹中下载。当我点击任何墙纸时,上面的示例链接之一被激活,墙纸被下载,如何用这个来包装你的代码?@ParamVeer你得到了一个答案-现在你应该:1)接受它,2)做“肮脏的工作”-不要接受这里的人,以便“为你工作”!谢谢你的回答,但是我必须把这些代码放在哪里,如果有很多文件,但是有一个相同的文件夹呢?我想更改文件夹路径,或者隐藏它,或者伪造它。您的示例是一个文件Just crate a
download.php
它会在您访问该页面时下载图像,但就像我有多张墙纸一样,当用户单击其中任何一张时,特定的文件会在同一文件夹中下载。当我点击任何墙纸时,上面的示例链接之一被激活,墙纸被下载,如何用这个来包装你的代码?@ParamVeer你得到了一个答案-现在你应该:1)接受它,2)做“肮脏的工作”-不要接受这里的人,以便“为你工作”!