表格提交时自动“下载”PDF

时间:2012-06-05 16:28:46

标签: javascript html

我有一个表单按钮,单击它时会提交表单。

我同时希望浏览器开始下载PDF文件。我想知道我该怎么做?请记住,PDF通常默认由浏览器打开,但我希望浏览器“另存为”文件而不打开文件。这是否可以仅使用html或我是否需要javascript?

4 个答案:

答案 0 :(得分:2)

如果您在服务器端使用PHP,请尝试此操作。这是在我的一个网站上运行的经过测试的代码。

<?php
    ob_start();
    $file = 'YOUR-FILENAME-HERE.pdf';

    if (file_exists($file)) 
    {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit();
    }
?>

浏览器会提示下载而不在浏览器中显示。

答案 1 :(得分:2)

您可以使用this plugin使用javascript下载文件 否则在javascript中,您可以为其编写代码。

$('a').click(function(e) {
   e.preventDefault();  //stop the browser from following
   window.location.href = 'downloads/file.pdf';
});

<a href="no-script.html">Download now!</a>

或者,你可以使用它。

在PHP中:

<?php
  header('Content-type: application/pdf');
  header('Content-disposition: attachment; filename=filename.pdf');
  readfile("file.pdf");
?>

在Javascript中:

<body>
<script>
 function downloadme(x){
    winObj = window.open(x,'','left=10000,screenX=10000');
    winObj.document.execCommand('SaveAs','null','download.pdf');
    winObj.close();
 }
 </script>

 <a href=javascript:downloadme('file.pdf');>Download this pdf</a>
 </body>

答案 2 :(得分:0)

在这种情况下,您必须配置您的网络服务器以强制PDF下载。 如果你正在使用Apache,你不妨看一下这篇文章 - &gt; http://www.thingy-ma-jig.co.uk/comment/7264

或者,如果您不必支持所有浏览器,只需使用html5下载属性即可逃脱 - &gt; http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

答案 3 :(得分:0)

选项1:您可以让表单提交的网址返回下载内容。

选项2:使用ajax调用提交数据onclick,将window.location设置为您的下载URL。

无论是在浏览器中打开pdf还是下载,都是您无法控制的客户端设置。