2015-09-24 104 views
1

觸發瀏覽器之外下載的最佳方式是什麼?在瀏覽器之外使用Javascript觸發器下載

我有一個不在服務器上的Html頁面,但應該只能用作數字看板瀏覽器。服務器(已存在)通過TCP套接字發送一個播放列表(服務器比較老),告訴客戶需要從哪裏下載媒體,以及媒體應該在哪裏下載。

JavaScript客戶端代碼和Tomcat服務器之間的通信現在是無關緊要的。我想知道的是,如果有一種方法可以將文件下載到某個目錄而不讓瀏覽器下載文件(問題 - >下載彈出 - >確認 - >不能用Javascript預設不同的下載文件夾等),以便我可以在下載後設置媒體標籤的來源?

(如果你問我爲什麼不只是流是媒體,因爲如果連接丟失的媒體仍然需要繼續打)

我真的希望我的解釋使任何意義。

乾杯 克里斯

+0

NOPE,你不能選擇在哪裏下載文件,他們會去用戶決定的地方。但是,有一個特殊的地方可以保存生活在沙箱中的頁面特定文件。請參閱http://www.noupe.com/design/html5-filesystem-api-create-files-store-locally-using-javascript-webkit.html –

+0

如果您正在討論媒體文件,那麼[預加載]( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#attr-preload)屬性,你可以設置爲'metadata'。 – Kaiido

回答

0

您可以將內容發送到Web服務器,並與指定類型/文件名將其返回到瀏覽器。例如在PHP中,你可以做這樣的事情:

header('Content-type: text/html'); 
header('Content-disposition: attachment;filename=myfile.txt'); 

另一種選擇是這個漂亮的JavaaScript庫,讓您保存在客戶端的一些內容: https://github.com/koffsyrup/FileSaver.js

它允許你這樣做這個瀏覽器:

saveTextAs("Hi,This,is,a,CSV,File", "test.csv"); 

您可能還需要來存儲你的內容瀏覽器的localStoragesessionStorage

+0

感謝您的回答 - localstorage和sessionstorage當然聽起來很有趣,但如果我錯了,請糾正我,只支持保存鍵值對。我需要將視頻保存到磁盤,以便即使在重新啓動瀏覽器,PC等後我仍然可以訪問它。似乎Javascript和Html 5不夠用,並且需要切換到非瀏覽器mehod,或者需要兩者結合。 –

+0

'localStorage'是你唯一的選擇。如果你可以用base64或其他東西編碼你的視頻,你可以將它存儲在那裏,它會一直存在,直到你刪除它。但是,有一個大小限制。 – advncd

0

我想知道的是,如果有一種方法來下載文件到某個目錄,而不讓瀏覽器下載文件

如果這是有可能它會打開一個安全漏洞因爲它可以將特殊文件(如程序)放入特殊文件夾(如自動啓動),然後導致不必要的代碼執行。由於安全考慮,這個希望是不可能的。

相關問題