2011-11-10 80 views
0

我想在用戶單擊HTML按鈕時顯示另存爲對話框。 我正在使用DOJO和JavaScript。 在IE中,document.exec來拯救,但在Firefox中需要修改文件系統以使用NSI。保存爲Firefox中的對話框

任何想法將不勝感激。

回答

1

您可以強制瀏覽器下載使用數據鏈接的一些數據:

content = "This is the text for downloading"; 
window.location.href = "data:application/octet-stream,"+ 
      encodeURIComponent(content); 

與此的主要問題是,用戶將不能夠選擇一個文件名和生成的文件名是一些隨機哈希。如果您不介意使用Flash,則可以使用Downloadify,這會讓您更好地控制「保存」對話框。

0

將HTML按鈕href設置爲未知文檔類型。說FileName.xxxblah

這會自動觸發另存爲對話框。

0

這不完全是你要找的,但唯一的可靠我知道的方式是在服務器上創建一個服務器端腳本,它將發送正確的標題。在PHP中,這是你會怎麼做:

header('Content-type: text/csv'); 
header('Content-Disposition: attachment; filename="mydocument.csv";'); 
header('Content-length: '.(int)strlen($csvData)); 

print($csvData); 

Content-type是文檔的「MIME類型」,並與一些瀏覽器的兼容性是非常重要的,這一完全的文件名的擴展名匹配。

Content-Disposition: attachment指示瀏覽器下載頁面,即使它通常不會爲該MIME類型執行此操作,並且您可以提供文件名。

Content-length是下載的大小,這是可選的,但是如果您希望用戶看到下載的進度條,則必須提供它。

某些瀏覽器會顯示另存爲對話框,而其他瀏覽器只會將該文件保存到用戶首選的下載文件夾中。你無法控制將會發生什麼。