2011-06-28 91 views
0

我有我的服務器的html界面。在界面上是一個按鈕。當用戶點擊按鈕時,他們下載位於服務器上的文件。Javascript下載按鈕的最佳實踐實現是什麼?

我用當前的實現在用戶按下按鈕後,將一個iframe添加到html文檔中。 iframe將url參數設置爲服務器上文件的URI,並顯示參數「none」。它附在文檔的正文上。

我的問題是,達到這樣的結果的最佳做法是什麼?即按鈕處理程序應如何管理下載?

+0

我認爲iframe不太可能與問題有關。除了你的字符編碼問題,我沒有看到你正在做的事情有什麼問題。這裏「安全」是什麼意思? – Pointy

+0

這個問題更多的是關於實現這種下載按鈕的最佳做法,而不是我遇到的問題。我已經編輯了這個問題。 –

+0

爲什麼要採用這種複雜的方式?你可以用一些PHP來做到這一點,並設置標題來強制瀏覽器下載文件。 Chrome Html 5視頻中的 – petsoukos

回答

2

我會說,最佳實踐是使用您的按鈕的形式。例如:

<form method="get" action="/file-to-download.zip"> 
    <div> 
    <input type="submit" value="Download" /> 
    </div> 
</form> 

如果你真的需要它在IFRAME爲目標(如aroth解釋,這似乎不必要的 - 你總是可以設置爲認可的類型,內容處置響應頭),你可以把target="myIFrame"在你的表單標籤(myIFrame是你隱藏的IFRAME的名字)。

事實上,Content-Disposition response header最佳實踐確保文件被下載,而不是打開。

3

爲什麼不這樣做:

window.location.href = <download URL>;

這應該可以在任何瀏覽器中使用,除非您的可下載內容使用的是mime類型,否則它甚至不應該將用戶從您的網頁(從瀏覽器中顯示的內容的角度)瀏覽器會嘗試渲染自己(例如,如image/png)。

+0

我遇到了此方法的網絡錯誤,有關如何解決此問題的任何想法? – DevDave