2013-04-10 2 views
7

Привет Я хочу сохранить холст локально в 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 или перекрестного домена? Большое спасибо.

+0

Локальный тег-хранилище означает что-то еще, что, по-вашему, означает. – epascarello

+1

Какую версию IE вы здесь говорите? IE10? – epascarello

+0

Как предполагает epascarello, локальное хранилище на самом деле означает специальную зону хранения брандмауэра, в которой ваш браузер может хранить/извлекать строки (например, ваши данныеURL), специфичные для вашего сайта. Вы ** не можете ** сохранить ваш dataURL в файловой системе пользователя - по крайней мере, пока (я слышал слухи о том, чтобы разрешить это в будущем, хотя). Поэтому пока просто отскакивайте изображение с сервера, чтобы пользователь мог сохранить его в своей локальной файловой системе. – markE

ответ

1

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

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

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

Предполагая, что у вас есть данные URI уже, вы можете создать blob, а затем использовать 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"); 

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

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

+1

Это ответ. – Chazt3n

 Смежные вопросы

  • Нет связанных вопросов^_^