2010-10-20 264 views

回答

18

內容處置是response header,即。服務器必須返回它。您無法通過客戶端JavaScript實現此目的。

+0

正確的,是我的想法。 – 2010-10-20 07:55:46

10

Firefox和基於Chromium的瀏覽器支持download attribute。如果您需要更好的兼容性現在,請使用基於Flash的Downloadify作爲回退。


HTML只:使用download屬性:

<a download href="http://upload.wikimedia.org/wikipedia/commons/b/bb/Wikipedia_wordmark.svg">Download</a>


的Javascript只:可以保存任何文件與此代碼:

function saveAs(uri) { 
 
    var link = document.createElement('a'); 
 
    if (typeof link.download === 'string') { 
 
     link.href = uri; 
 
     link.setAttribute('download', true); 
 

 
     //Firefox requires the link to be in the body 
 
     document.body.appendChild(link); 
 

 
     //simulate click 
 
     link.click(); 
 

 
     //remove the link when done 
 
     document.body.removeChild(link); 
 
    } else { 
 
     window.open(uri); 
 
    } 
 
} 
 

 
var file = 'http://upload.wikimedia.org/wikipedia/commons/b/bb/Wikipedia_wordmark.svg'; 
 
saveAs(file);

+1

當我嘗試這個(作爲一個完整的javaScript新手),它的行爲就像我已經使用'true'作爲所需的下載文件的名稱。我認爲它需要'link.setAttribute('download','');'以避免提供下載文件的建議名稱? – Speed8ump 2016-10-31 20:19:48