我有一些大尺寸的PDF目录在我的网站上,我需要链接这些下载。当我在谷歌上搜索时,我发现下面有这样一件事。它应该打开“另存为…”弹出链接点击…
<head>
<meta name="content-disposition" content="inline; filename=filename.pdf">
...
但它不工作:/当我链接到一个文件如下,它只是链接到文件,并试图打开文件。
<a href="filename.pdf" title="Filie Name">File name</a>
更新(根据以下答案):
据我所知,没有100%可靠的跨浏览器解决方案。也许最好的方法是使用下面列出的web服务之一,并提供下载链接…
http://box.net/
http://droplr.com/
http://getcloudapp.com/
通常会发生这种情况,因为一些浏览器设置或插件会直接在同一个窗口中打开PDF,就像一个简单的网页。
以下内容可能会对你有所帮助。几年前我用PHP做过。但目前我还没有在这个平台上工作。
<?php
if (isset($_GET['file'])) {
$file = $_GET['file'];
if (file_exists($file) && is_readable($file) && preg_match('/\.pdf$/',$file)) {
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($file);
}
}
else {
header("HTTP/1.0 404 Not Found");
echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>";
}
?>
将上述文件保存为download.php。
将这个小片段保存为服务器某处的PHP文件,您可以使用它在浏览器中进行文件下载,而不是直接显示。如果要提供PDF以外的文件,请删除或编辑第5行。
你可以这样使用它:
将以下链接添加到HTML文件中。
<a href="download.php?file=my_pdf_file.pdf">Download the cool PDF.</a>
参考来源:这个博客
通常会发生这种情况,因为一些浏览器设置或插件会直接在同一个窗口中打开PDF,就像一个简单的网页。
以下内容可能会对你有所帮助。几年前我用PHP做过。但目前我还没有在这个平台上工作。
<?php
if (isset($_GET['file'])) {
$file = $_GET['file'];
if (file_exists($file) && is_readable($file) && preg_match('/\.pdf$/',$file)) {
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($file);
}
}
else {
header("HTTP/1.0 404 Not Found");
echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>";
}
?>
将上述文件保存为download.php。
将这个小片段保存为服务器某处的PHP文件,您可以使用它在浏览器中进行文件下载,而不是直接显示。如果要提供PDF以外的文件,请删除或编辑第5行。
你可以这样使用它:
将以下链接添加到HTML文件中。
<a href="download.php?file=my_pdf_file.pdf">Download the cool PDF.</a>
参考来源:这个博客
元标签并不是实现这一结果的可靠方法。一般来说,你甚至不应该这样做——应该由用户/用户代理来决定如何处理你提供的内容。如果用户愿意,总是可以强制浏览器下载文件。
如果您仍然希望强制浏览器下载文件,请直接修改HTTP报头。下面是一个PHP代码示例:
$path = "path/to/file.pdf";
$filename = "file.pdf";
header('Content-Transfer-Encoding: binary'); // For Gecko browsers mainly
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Accept-Ranges: bytes'); // Allow support for download resume
header('Content-Length: ' . filesize($path)); // File size
header('Content-Encoding: none');
header('Content-Type: application/pdf'); // Change the mime type if the file is not PDF
header('Content-Disposition: attachment; filename=' . $filename); // Make the browser display the Save As dialog
readfile($path); // This is necessary in order to get it to actually download the file, otherwise it will be 0Kb
请注意,这只是对HTTP协议的扩展;有些浏览器可能会忽略它。