我想在用户购买产品时发送用户下载链接。我通过邮件发送下载链接。所以,当我发送download link
时,我会发送它... www.xyz.com/images/2343354.jpg
但我不想让他知道目录结构。表示当用户尝试访问目录后方链接/images/2343355
时,他可以下载其他我不想提供给该用户的图像。
有什么办法可以通过提供用户目录链接来避免下载吗?
我的图片在public/images
目录中,因为我已经制作了一个laravel应用程序。
答案 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)中的文件名每次都是动态的,目录路径在脚本中是静态的。
尝试一次。