页面加载后自动下载PDF

时间:2018-03-14 15:59:16

标签: javascript asp.net windows pdf download

我需要在页面加载后自动下载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文件,那么上面的代码是否会起作用?

2 个答案:

答案 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);