2012-06-05 58 views
1

我有一個表單按鈕,點擊它即可提交表單。在表單提交時自動「下載」PDF格式

我希望在同一時間,瀏覽器開始下載PDF文件。我想知道我該怎麼做?請記住,默認情況下,PDF通常是由瀏覽器打開的,但我希望瀏覽器「另存爲」文件,而不是打開文件。這隻能使用HTML嗎?還是我需要JavaScript?

回答

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(); 
    } 
?> 

瀏覽器會提示下載而不顯示在瀏覽器中。

0

在這種情況下,您必須將您的網絡服務器配置爲強制PDF下載。 如果你使用Apache,您不妨看看這篇文章 - > http://www.thingy-ma-jig.co.uk/comment/7264

或者,如果你沒有支持所有瀏覽器,你可以只使用HTML5下載屬性脫身 - >http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

+0

你介意張貼一些代碼(哪怕它只是從文章複製代碼在這裏)?鏈接到其他文章本身並不是一個正確的答案。 – Nightfirecat

0

選項1:您可以讓表單提交的url返回下載。

選項2:使用ajax調用來提交數據onclick,將window.location設置爲您的下載url。

pdf是否在瀏覽器中打開或下載,是一種您無法控制的客戶端設置。

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>