你的MIME類型設置爲「應用程序/八位字節流」,這通常會被下載並沒有顯示(取決於瀏覽器和系統設置)。如果您嘗試加載可瀏覽器顯示的內容,則應該爲您的內容使用更合適的MIME類型,以便它以內聯方式顯示並且不會下載。
請注意:As of Chrome 60和upcoming version of FireFox(儘管它出現的FireFox will still support images),數據的URI不能在瀏覽器(和it was never supported in IE/Edge)的頂級框架打開,但是它們可以在iframe中和img元素被打開。
下面的解決方法已經過測試,可在上述瀏覽器的最新版本中使用。這也可以用img標籤重寫以顯示圖像。
<button id='btnDownload'>Download</button>
document.getElementById('btnDownload').addEventListener('click', function(){
var w = window.open('about:blank');
setTimeout(function(){ //FireFox seems to require a setTimeout for this to work.
w.document.body.appendChild(w.document.createElement('iframe'))
.src = 'data:application/octet-stream;base64,SWYgSSBoYWQgYSBuaWNrbGUgZm9yIGV2ZXJ5IHRpbWUgSSBoYWQgYSBuaWNrbGUsIEknZCBoYXZlIGVhdGVuIHR3aWNlIGFzIG1hbnkgcGlja2xlcy4=';
}, 0);
});
但是,如果你的目的是剛纔下載的內容(與問題中所陳述的意圖,但適用於「應用程序/八位字節流」中的一般內容),這應該足夠了:
<a href='data:application/octet-stream;base64,SWYgSSBoYWQgYSBuaWNrbGUgZm9yIGV2ZXJ5IHRpbWUgSSBoYWQgYSBuaWNrbGUsIEknZCBoYXZlIGVhdGVuIHR3aWNlIGFzIG1hbnkgcGlja2xlcy4=' download>Download this</a>
謝謝您的回答。 我已經測試了我在iPad上使用Chrome和Safari瀏覽器的功能,並且它可以工作。由於網絡瀏覽器偏好,它似乎在我的電腦上不起作用。也許。順便說一下,如果它可以幫助你,我用「data:application/octet-stream; base64」來忽略我的base64是什麼類型的文件。 – user3249592
此解決方案不適用於IE.Anywhere解決方案,使其在IE中工作? –
這不再適用於Chrome,也將停止在Firefox中工作。查看我的答案瞭解更多詳情。 –