2013-12-07 2 views
5

Я использую этот код для сохранения изображений в Javascript:Missing расширение при сохранении изображения из холста

window.location.href = grid.toDataURL("image/png").replace("image/png", "image/octet-stream"); 

Код работает, но файл сохранен не имеет никакого расширения, я должен переименовать его вручную.

Мой вопрос в том, как я могу разместить расширение в конце?

спасибо.

ответ

7

toDataURL производит данные-uri, а не имя файла, поэтому расширения в этом случае не применяются.

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

Вы можете обойти эту проблему путем установки тега привязки, как это:

<a id="imageLink" href="data-uri-here" download="myFilename.png"> 
    Click to download 
</a> 

В JavaScript вы можете установить эти атрибуты динамические:

imageLink.href = grid.toDataURL(); 
imageLink.download = 'myOtherFilename.png'; 
+0

Очень интересный материал! Спасибо;) Есть ли другой способ создать это вместо объявления ссылки в html? Я использую dat-gui-библиотеку для своих кнопок, и я не знаю, как создать загрузку attr. – mickaelb91

+0

@ mickaelb91 уверен, вы можете просто создать тег в javascript. Существует также возможность автоматического запуска клика. Проверьте это: http://stackoverflow.com/questions/18480474/how-to-save-an-image-from-canvas/18480879#18480879 – K3N

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