2012-10-18 162 views
1

我为我的网站使用wordpress,并在我提供的下载文件夹中有一些壁纸。但我不希望用户知道文件夹的确切文件位置。由于有订阅下载。用户下载文件时隐藏文件夹路径

想我的文件存储在

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

现在如何隐藏文件夹名称example.folder和使用假名字,这dosent显示出来,同时下载。真的需要这方面的大力帮助。任何人都可以给我一个好方法。我尝试了一些wordpress插件,但没有帮助。

+0

图像系统中最要做的事情就是把文件放在apache不提供的目录中(在根网站文件夹之外),然后让PHP打开文件并将其输出到浏览器。你可以使用'fopen()'或'readfile()'来达到这个目的。 – gcochard

回答

5

举例在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); 
+0

谢谢你的答案,但我必须把这个代码,以及如果有一些文件,但相同的文件夹,我想改变文件夹路径或隐藏它或假它呢。你的例子是一个文件 –

+0

只是一个'download.php'它会下载图像,无论何时你访问该页面 – Baba

+0

,但它像我有多个壁纸,当用户点击任何一个,然后特定的文件得到下载 –

相关问题