2017-05-11 52 views
0

我想在用户购买产品时发送我的用户下载链接。我通过邮件发送下载链接。所以当我发送download link我发送它像.. www.xyz.com/images/2343354.jpg 但我不想让他知道目录结构。意思是当用户试图访问目录后链接/images/2343355他可以下载其他图像,我不想给该用户。
有没有什么办法可以通过给用户目录下载链接来避免?如何发送下载链接通过隐藏目录

我的照片位于public/images目录内,因为我已经制作了一个laravel应用程序。

+0

用户如何访问您的'/ images/2343355'目录下载图像。获得安全权限 – CyberAbhay

+0

定义一个单独的下载路径,它抽象出目录结构,然后编写一些控制器逻辑以获取id并提供相应的图像 –

+0

有没有什么办法可以解决它使用里面的.htaccess中的RewriteCond – Hola

回答

0

向用户提供哈希URL,如www.xyz.com/download?image=XNS2323NIEYEDUJES 您需要将具有相关哈希值的图像名称存储在表中。 在下载页面中获取图像请求数据并从数据库中检索原始图像名称。 并使用PHP下载代码进行下载。

<?php 
//get original filename with hash name from fb and store in a variable 
if($dboriginalfilename!="")){ 
    $fileName = basename($_GET['file']); 
    $path = set ur path; 
    $filePath = $path.$fileName; 
    if(!empty($fileName) && file_exists($filePath)){ 
     // Define headers 
     header("Cache-Control: public"); 
     header("Content-Description: File Transfer"); 
     header("Content-Disposition: attachment; filename=$fileName"); 
     header("Content-Type: application/zip"); 
     header("Content-Transfer-Encoding: binary"); 
     // Read the file 
     readfile($filePath); 
     exit; 
    } else { 
     echo 'The file does not exist.'; 
    } 
} 

我认为这会对你有用。谢谢

0

创建一个像这样的JavaScript函数将下载文件,用户不会知道什么URL被调用。

这里是样品的解决方案,你可以尝试

<a href="" id="yourlinkId" onclick="downloadfile('file');">download</a> 
    <script> 
    function downloadfile(filename){ 
    var file_path = 'host/path/'+filename+'.ext'; 
    var a = document.getElementById('yourlinkId'); //or grab it by tagname etc 
    a.href = file_path; 
    a.download = file_path.substr(file_path.lastIndexOf('/') + 1); 
    document.body.appendChild(a); 
    a.href = '';//remove path after download 
    } 
    </script> 

在此代码正常的链接将没有任何的href显示和下载file.Then在它的点击后,你将只传递文件名和文件会然后下载,如果用户悬停在链接上没有路径将被显示。

这里点击文件名('文件名')每次都是动态的,目录路径在脚本中是静态的。

试试这个。