我有我的服務器的html界面。在界面上是一個按鈕。當用戶點擊按鈕時,他們下載位於服務器上的文件。Javascript下載按鈕的最佳實踐實現是什麼?
我用當前的實現在用戶按下按鈕後,將一個iframe添加到html文檔中。 iframe將url參數設置爲服務器上文件的URI,並顯示參數「none」。它附在文檔的正文上。
我的問題是,達到這樣的結果的最佳做法是什麼?即按鈕處理程序應如何管理下載?
我有我的服務器的html界面。在界面上是一個按鈕。當用戶點擊按鈕時,他們下載位於服務器上的文件。Javascript下載按鈕的最佳實踐實現是什麼?
我用當前的實現在用戶按下按鈕後,將一個iframe添加到html文檔中。 iframe將url參數設置爲服務器上文件的URI,並顯示參數「none」。它附在文檔的正文上。
我的問題是,達到這樣的結果的最佳做法是什麼?即按鈕處理程序應如何管理下載?
我會說,最佳實踐是使用您的按鈕的形式。例如:
<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是最佳實踐確保文件被下載,而不是打開。
爲什麼不這樣做:
window.location.href = <download URL>;
?
這應該可以在任何瀏覽器中使用,除非您的可下載內容使用的是mime類型,否則它甚至不應該將用戶從您的網頁(從瀏覽器中顯示的內容的角度)瀏覽器會嘗試渲染自己(例如,如image/png
)。
我遇到了此方法的網絡錯誤,有關如何解決此問題的任何想法? – DevDave
我認爲iframe不太可能與問題有關。除了你的字符編碼問題,我沒有看到你正在做的事情有什麼問題。這裏「安全」是什麼意思? – Pointy
這個問題更多的是關於實現這種下載按鈕的最佳做法,而不是我遇到的問題。我已經編輯了這個問題。 –
爲什麼要採用這種複雜的方式?你可以用一些PHP來做到這一點,並設置標題來強制瀏覽器下載文件。 Chrome Html 5視頻中的 – petsoukos