我需要在页面加载后自动下载PDF。我不认为这会那么复杂。我不是开发人员。我只是在营销方面工作。所以这可能是非常明显的。
我在this thread上找到了一些javascript代码,我尝试了一下,但它将您所在的页面重定向到PDF - 而不是将用户留在当前页面上而只是下载PDF。
JAVASCRIPT:
$(function() {
$('a[data-auto-download]').each(function(){
var $this = $(this);
setTimeout(function() {
window.location = $this.attr('href');
}, 2000);
});
});
HTML
<p>The download should start shortly. If it doesn't, click
<a data-auto-download href="/your/file/url">here</a>.</p>
我还尝试了iframe方法,将iframe设置为display:none但不起作用。我不认为它会因为不会在iframe中显示PDF,因为它在浏览器中的作用是什么?
如果我创建了一个他们在this thread中讨论过的PHP文件,那么上面的代码是否会起作用?
答案 0 :(得分:0)
在.htaccess或apache设置中设置Content-Disposition以将pdf作为下载提供
<Location "/uploads/documents/">
<Files *.pdf>
ForceType application/octet-stream
Header set Content-Disposition attachment
</Files>
</Location>
或.htaccess中所有pdf文件的示例:
<IfModule mod_headers.c>
<FilesMatch "\.(pdf|PDF)$">
ForceType application/octet-stream
Header set Content-Disposition "attachment"
Allow from all
</FilesMatch>
</IfModule>
将它放在root中的.htaccess中,pdf位于/ uploads / documents
下在Windows服务器上,您可以使用小型ASP.NET脚本来提供文件
string filename = "my-download.pdf";
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
string aaa = Server.MapPath("~/uploads/documents/" + filename);
Response.TransmitFile(Server.MapPath("~/uploads/documents/" + filename));
Response.End();
答案 1 :(得分:0)
这是最好的方法,如果您想使用javascript
var file_path = 'files/xyz.pdf';
var a = document.createElement('A');
a.href = file_path;
a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);