我在我的网页上提供一个pdf文件的链接供下载,如下所示
<a href="myfile.pdf">Download Brochure</a>
问题是当用户点击这个链接时
但我希望它总是弹出给用户下载,无论是否安装了"Adobe acrobat“。
请告诉我怎么做?
发布于 2008-12-13 07:18:13
不是链接到.PDF文件,而是执行如下操作
<a href="pdf_server.php?file=pdffilename">Download my eBook</a>
它输出一个自定义标题,打开PDF (二进制安全)并将数据打印到用户的浏览器,然后他们可以选择保存PDF,而不管他们的浏览器设置。pdf_server.php应如下所示:
header("Content-Type: application/octet-stream");
$file = $_GET["file"] .".pdf";
header("Content-Disposition: attachment; filename=" . urlencode($file));
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
flush(); // this is essential for large downloads
}
fclose($fp);
PS:显然,在" file“变量上运行一些健全性检查,以防止他人窃取您的文件,例如不接受文件扩展名、拒绝斜杠、将.pdf添加到值中
发布于 2013-06-09 23:46:50
这是一个常见的问题,但很少有人知道有一个简单的HTML5解决方案:
<a href="./directory/yourfile.pdf" download="newfilename">Download the pdf</a>
其中,newfilename
是建议用户保存文件的文件名。或者,如果保留为空,它将默认为服务器端的文件名,如下所示:
<a href="./directory/yourfile.pdf" download>Download the pdf</a>
兼容性:我在Firefox21和Iron上进行了测试,两者都工作得很好。它可能无法在HTML5不兼容或过时的浏览器上工作。我测试的唯一没有强制下载的浏览器是IE……
在此处检查兼容性:http://caniuse.com/#feat=download
发布于 2011-11-14 21:35:59
不要让遍历每一个文件行。改为使用读取文件,这样会更快。这不在php网站上:http://php.net/manual/en/function.readfile.php
$file = $_GET["file"];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Type: application/force-download");
header('Content-Disposition: attachment; filename=' . urlencode(basename($file)));
// header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
确保清理你的get变量,因为有人可以下载一些php文件...
https://stackoverflow.com/questions/364946
复制相似问题