有没有办法强制用户的下载管理器开始下载.PDF而不是在新的窗口/标签中显示.PDF?
答案 0 :(得分:35)
使用<a>
标记
<a href="content/file.pdf" download > pdf link </a>
<a href="content/file.doc" download > doc link </a>
答案 1 :(得分:31)
在HttpResponse标头中设置Content-Disposition:
Content-Disposition = 'attachment; filename=filename.pdf'
答案 2 :(得分:14)
这需要在服务器端完成。你不能在客户端这样做。
如何操作取决于所讨论的服务器端语言。
PHP:
header('Content-Disposition: attachment; filename="' . $filename . '"');
爪哇:
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
.NET:
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
如果没有任何服务器端代码可以流式传输PDF文件,那么您需要在网络服务器级别进行配置。在例如Apache HTTPD中,您可以使用以下条目在PDF文件夹的根目录中放置/展开.htaccess
文件:
<Files *.pdf>
Header set Content-Disposition attachment
</Files>
或在httpd.conf
文件中全局配置它。对于具有web.config
文件的IIS,存在类似的方法。
答案 3 :(得分:8)
对于IIS:
将您要强制下载的所有文件放在自己的文件夹中。
然后在IIS中转到该文件夹并双击HTTP Response Headers。
使用以下信息添加新标头:
名称: 内容处置
值: 附件
访问该文件夹中的所有文件时,应提示相应浏览器的“另存为”对话框。
答案 4 :(得分:4)
您需要发送HTTP标头(Content-disposition
)才能执行此操作。你不能在客户端这样做。
答案 5 :(得分:3)
<?php
header('Content-disposition: attachment; filename=filename.pdf');
header('Content-type: application/pdf');
readfile('path/to/filename.pdf');
答案 6 :(得分:2)
.htaccess解决方案:
AddType application/octet-stream .pdf
答案 7 :(得分:2)
是的,可以在JSP页面中完成...通过在一个JSP页面中提供下载链接到新脚本页面...并按如下方式下载PDF文件
DownloadPage.JSP代码: -
<a href='downloadPdf.jsp?file=FILE.pdf' >Download PDF File</a>
downloadPdf.JSP代码: -
<%@ page import="java.util.*,java.io.*"%>
<%
File f = new File ("E:/PDFfiles/Downloads/" + request.getParameter("file") );
response.setContentType ("application/pdf");
response.setHeader ("Content-Disposition", "attachment; filename=""+request.getParameter("file")+""");
String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());
InputStream in = new FileInputStream(f);
ServletOutputStream outs = response.getOutputStream();
int bit = 256;
int i = 0;
try {
while ((bit) >= 0) {
bit = in.read();
outs.write(bit);
}
}
catch (IOException ioe) {
ioe.printStackTrace(System.out);
}
outs.flush();
outs.close();
in.close();
%>
来源:http://bloggerplugnplay.blogspot.in/2012/05/how-to-create-force-download-link-for.html
答案 8 :(得分:0)
<?php
// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
}
$reader = fopen($filename, "r");
$contents = fread($reader, filesize($filename));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($filename));
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($filename));
ob_end_clean();
echo $contents;
答案 9 :(得分:0)
从互联网上找到的vb asp网络代码我做了这个简单的c#download.aspx页面。 您可以使用文件网址传递为&#34; f&#34;查询字符串参数。 (/folder/download.aspx?f=/folder1/example.pdf)。
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/usr/local/share/cmake-3.5/Modules")