Существует ли способ позволить пользователю, после того, как он создал векторный график на JavaScript svg холст с помощью браузера, для загрузки этого файла на их локальную файловую систему?
SVG является общим новым полем для меня поэтому быть терпеливым, если моя формулировка не точна.
Это возможно с помощью обычной команды браузера «Сохранить», но она не просто сохранит холст SVG, а сохранит всю страницу.
Я считаю, что лучше всего использовать AJAX и отправлять все данные SVG XML в виде данных POST на серверный сценарий, а этот сценарий просто отправляет обратно данные POST с заголовком Content-Disposition: attachment; filename = yourfile.svg
.
(В PHP вы можете получить необработанное содержимое POST с помощью file_get_contents ('php: // input')
.)
Вы не можете ничего сохранить с помощью javascript в локальной файловой системе, вам следует отправить содержимое холста
на сервер и заставьте пользователя загрузить и сохранить его.
Отвечу на свой вопрос:
Другая возможность, хотя и не самая лучшая, - это отобразить сериализованное содержимое на веб-странице и попросить пользователя выбрать, скопировать и вставить его. Это после исследования решения Эли Грей.
Наиболее совместимым способом будет возврат к серверу. Вы также можете использовать data: URI в некоторых браузерах.
Использование FileSaver.js
saveAs(new Blob([SVG_DATA_HERE], {type:"application/svg+xml"}), "name.svg")
Да, возможно. Используйте jquery.svg http://keith-wood.name/svgRef.html и опубликуйте данные svg xml с помощью функции svg.toSVG () (запись в скрытое поле при отправке). Сохраните php и преобразуйте его в растр с помощью imagemagick (convert image.svg image.png), затем принудительно загрузите файл с помощью заголовка («Content-Type: application / octet-stream») и прочитайте файл изображения.