在IE中本地保存画布

时间:2013-04-10 16:25:17

标签: javascript html5 internet-explorer canvas download

您好我想在IE中本地保存画布。

  var img = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");

我无法通过以下方式下载它。

1) document.execCommand("SaveAs"..
2) window.location.href = img;
3) $.fileDownload(img);  // jquery download file library-
4) canvas2image // cross domain problem.

有没有办法在没有base64或跨域问题的IE中本地保存画布?非常感谢你。

2 个答案:

答案 0 :(得分:4)

我知道这已经很晚了,但是在我的搜索中偶然发现了这个问题同样的事情,我想分享一个对我有用的解决方案。

假设您已有数据URI,可以创建blob,然后使用msSaveBlobmsSaveOrOpenBlob

示例:

dataURItoBlob = function(dataURI) {
        var binary = atob(dataURI.split(',')[1]);
        var array = [];
        for(var i = 0; i < binary.length; i++) {
            array.push(binary.charCodeAt(i));
        }
        return new Blob([new Uint8Array(array)], {type: 'image/png'});
    }

var blob = dataURItoBlob(uri);
window.navigator.msSaveOrOpenBlob(blob, "my-image.png");

我使用此answer作为我的大部分解决方案。

输入后,我意识到这并没有真正帮助你解决跨域问题,所以这是最好的部分答案。有了这个,我只能考虑在可能的情况下使用数据URI,如果跨域是一个问题。

答案 1 :(得分:1)

嗯,看起来这在IE中也不起作用,但由于你没有列出它,我将提供一个例子。这使用HTML5 download attributemore here),并允许用户点击然后下载文件的链接。

<a href="data:text/html;base64,PCF...." download="file.png"></a>