2016-12-02 64 views
1

圖像託管在服務器外部,僅下載到用戶(客戶端)。跨瀏覽器文件下載按鈕點擊兼容Chrome和IE?

我試過HTML5下載標籤,但IE瀏覽器不能很好地工作。

<div style="width:800px; height:457px; background-image:url('http://i.imgur.com/7fypLpI.jpg');"></div> 
<a href="http://i.imgur.com/7fypLpI.jpg" download="http://i.imgur.com/7fypLpI.jpg">Download</a> 

https://jsfiddle.net/eLpc8d7u/

我怎樣才能下載的文件,例如使用JavaScript的任何瀏覽器?

我已經看到了這個問題,其他:IE download file

但我仍然感到困惑,使一個簡單的腳本。

+0

這不正是你想要的,但你可以使用我的答案的一部分從這裏:http://stackoverflow.com/questions/39589917/show-a-progress-bar-for-downloading-file s-using-xhr2-ajax/39599878#39599878(檢查'onreadystatechange'裏面的javascript代碼) – Dekel

+0

你定位哪個IE版本,IE <10 or IE> = 10還是兩者兼而有之? – Aruna

+0

@Aruna IE> = 9會很完美,但IE> = 10會有幫助。 – ephramd

回答

2

對於跨瀏覽器下載,包括IE < 10和IE> = 10,您可以使用下面的庫,它將爲您輕鬆完成任務。

http://danml.com/js/download.js

GitHub的位置:對於你的情況https://github.com/rndme/download

的示例代碼段:

function downloadImage(event, url, fileName) { 
 
    event.preventDefault(); 
 

 
    if(window.download && url) { 
 
    fileName = fileName || url.split('/').pop().split('?')[0]; 
 
    var ajax = new XMLHttpRequest(); 
 
     \t \t ajax.open('GET', url, true); 
 
     \t \t ajax.responseType = 'blob'; 
 
     \t \t ajax.onload= function(e){ 
 
\t \t \t \t download(e.target.response, fileName, 'application/octet-stream'); 
 
\t \t \t \t }; 
 
     \t \t setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return: 
 
\t \t \t  return ajax; 
 
    } 
 
}
<script src="http://danml.com/js/download.js"></script> 
 
<div style="width:800px; height:457px; background-image:url('http://i.imgur.com/7fypLpI.jpg');"></div> 
 
<a href="http://i.imgur.com/7fypLpI.jpg" onclick="downloadImage(event, 'http://i.imgur.com/7fypLpI.jpg')">Download with default file name</a><br/> 
 
<a href="http://i.imgur.com/7fypLpI.jpg" onclick="downloadImage(event, 'http://i.imgur.com/7fypLpI.jpg', 'testImage.jpg')">Download with custom file name</a>

+0

謝謝!你的例子在這裏工作正常,但在我的服務器上它返回以下錯誤: 「Xmlhttprequest無法加載訪問控制允許來源標題存在」 是不是不安全啓用它? – ephramd

+0

與FF – ephramd

+0

不兼容您只能爲特定域啓用它,而不是全部。 – Aruna