我通过着陆页从我的网站下载提供pdf文档。
我想隐藏地址栏中显示的网址/链接,当我将鼠标悬停在网页上的下载按钮上时,链接无法共享。
最好的方法是什么?请仔细解释。
由于
答案 0 :(得分:1)
好的,你不能用普通的HTML做到这一点。您可以使用各种技巧,但它们可能是用户体验的问题,您将使用服务器端语言。
你可以做的是创建一个php页面,按你想要的方式命名(让我们说download.php
),然后链接到那个页面。页面应该是这样的:
// Path to the file
$path = '/home/folder/yourfile.pdf';
// This is based on file type of $path, but not always needed
$mm_type = "application/octet-stream";
//Set headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($path)) );
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");
// Outputs the content of the file
readfile($path);
exit();
这样您只需链接到download.php
页面即可下载/打开PDF,如下所示:
<a href="http://www.somesite.com/download.php">Download</a>
根据BenjaminC
建议
另一种可能性是将其连接到数据库。数据库有一个名为downloads_table
的表,里面有2个字段:
char(32)
int(1) dafault 0
然后您创建一个md5
字符串
$ secret = md5(rand(1000,9999999));
将其放在secret
字段内,创建链接:
<a href="http://www.somesite.com/download.php?s=ahanlskdhf78asdf87absdfas8d7f6">Download</a>
用户收到/看到一个链接,按下时你要编辑上面代码的第一行,检查数据库中的downloaded
字段= 0是否比继续下载,否则该人看到错误页。
这样它只能下载一次。
答案 1 :(得分:0)
(编辑)
如果将来这对任何人都有用,可以在这个小提琴中看到功能:https://jsfiddle.net/aznjr87g/
从谷歌下载2.1.3 jquery.min.js。
(编辑结束)
这可以使用Html5的下载属性来实现。
<a href="#" download="path/path/file.dpf">Download PDF</a>
如果将鼠标悬停在其上,则只显示yoursite.com /#