2012-12-19 130 views
5

輸入是可變數量的URL(遠程),全部鏈接圖像資源。希望允許用戶允許一次批量下載所有這些URL。由於我們正在談論1000-2000個圖像資源,因此要求用戶單擊「另存爲...」爲每個URL都是不可行的。如何強制/允許用戶下載多個文件? (客戶端)

我最初的嘗試是將所有圖像下載到一個blob(How to read loaded image into a blob?,由於同源策略而不工作),歸檔該文件並允許用戶下載(所有此客戶端)。

我想知道什麼是可能的替代解決方案?無論解決方案是什麼,它都不能在任何時候將遠程資源下載到服務器。

回答

0

我真的不能想到更好的東西,但要根據用戶的喜好在服務器端準備一個存檔文件,然後讓用戶下載該包。

我想你可以讓用戶安裝一個瀏覽器擴展,它允許更多的控制二進制數據和本地文件系統,但我懷疑這就是你要找的。

1

雖然這不應該成爲可能,但我設法在Chrome中做了一些這樣的事情。首先,你需要將download attrbute設爲您的所有鏈接f.ex:

<a href="http://example.com/image1.jpg" download>download</a> 
<a href="http://example.com/image2.jpg" download>download</a> 

然後創建一個合成點擊功能:

function makeClick(element) { 
    var evt = element.ownerDocument.createEvent('MouseEvents'); 
    evt.initMouseEvent('click', true, true, 
     element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, 
     false, false, false, 1, null); 
    element.dispatchEvent(evt); 
}​ 

然後,只需遍歷你的鏈接,並把它稱爲:

var links = document.getElementsByTagName('a'); 
for(var i=0;i<links.length; i++) { 
    makeClick(links[i]); 
} 

這裏是一個演示:http://jsfiddle.net/37pFC/

在Chrome中你會得到一個警告,說「這個網站希望你下載多個文件。允許「,但是這可能是管理

免責聲明:。我還沒有嘗試在其他瀏覽器,我不認爲這是非常跨瀏覽器友好