如何通过隐藏目录发送下载链接

时间:2017-05-11 04:51:42

标签: php laravel laravel-5

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

我的图片在public/images目录中,因为我已经制作了一个laravel应用程序。

2 个答案:

答案 0 :(得分:0)

为用户提供哈希网址,例如www.xyz.com/download?image=XNS2323NIEYEDUJES 您需要将具有相关哈希值的图像名称存储在表中。 在下载页面中获取图像请求数据并从db检索原始图像名称。 并使用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.';
    }
}

我认为这对你有用。谢谢

答案 1 :(得分: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和下载文件。然后单击它后,您将只传递文件名和文件,然后如果用户将鼠标悬停在链接上,则不会显示任何路径。< / p>

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

尝试一次。