Сохранение холста локально в IE

Привет, я хочу сохранить холст локально в 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.

Есть ли способ сохранить холст локально в IE без base64 или междоменной проблемы? Большое спасибо.

2 ответа

Я знаю, что уже поздно, но я наткнулся на этот вопрос в своем поиске, чтобы сделать то же самое, и я хотел поделиться решением, которое работает для меня.

Предполагая, что у вас уже есть URI данных, вы можете создать большой двоичный объект, а затем использовать msSaveBlob или msSaveOrOpenBlob

Пример:

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");

Я использовал этот ответ для большей части моего решения.

После этого я понимаю, что на самом деле это не поможет вам в междоменной проблеме, так что в лучшем случае это частичный ответ. При этом все, что я могу сказать, это рассмотреть возможность использования URI данных, где это возможно, если междоменная проблема является проблемой.

Что ж, похоже, в IE это тоже не работает, но так как вы его не перечислили, я приведу пример. Это использует HTML5 download атрибут ( подробнее здесь), и позволяет пользователю щелкнуть ссылку, которая затем загружает файл.

<a href="data:text/html;base64,PCF...." download="file.png"></a>
Другие вопросы по тегам