Как сохранить svg холст к локальной файловой системе

Существует ли способ позволить пользователю, после того, как он создал векторный график на JavaScript svg холст с помощью браузера, для загрузки этого файла на их локальную файловую систему?

SVG является общим новым полем для меня поэтому быть терпеливым, если моя формулировка не точна.

75
задан Shyam Bhimani 24 April 2016 в 23:45
поделиться

6 ответов

Это возможно с помощью обычной команды браузера «Сохранить», но она не просто сохранит холст SVG, а сохранит всю страницу.

Я считаю, что лучше всего использовать AJAX и отправлять все данные SVG XML в виде данных POST на серверный сценарий, а этот сценарий просто отправляет обратно данные POST с заголовком Content-Disposition: attachment; filename = yourfile.svg .

(В PHP вы можете получить необработанное содержимое POST с помощью file_get_contents ('php: // input') .)

15
ответ дан 24 November 2019 в 11:36
поделиться

Вы не можете ничего сохранить с помощью javascript в локальной файловой системе, вам следует отправить содержимое холста на сервер и заставьте пользователя загрузить и сохранить его.

1
ответ дан 24 November 2019 в 11:36
поделиться

Отвечу на свой вопрос:

Другая возможность, хотя и не самая лучшая, - это отобразить сериализованное содержимое на веб-странице и попросить пользователя выбрать, скопировать и вставить его. Это после исследования решения Эли Грей.

1
ответ дан 24 November 2019 в 11:36
поделиться

Наиболее совместимым способом будет возврат к серверу. Вы также можете использовать data: URI в некоторых браузерах.

1
ответ дан 24 November 2019 в 11:36
поделиться

Использование FileSaver.js

saveAs(new Blob([SVG_DATA_HERE], {type:"application/svg+xml"}), "name.svg")
18
ответ дан 24 November 2019 в 11:36
поделиться

Да, возможно. Используйте jquery.svg http://keith-wood.name/svgRef.html и опубликуйте данные svg xml с помощью функции svg.toSVG () (запись в скрытое поле при отправке). Сохраните php и преобразуйте его в растр с помощью imagemagick (convert image.svg image.png), затем принудительно загрузите файл с помощью заголовка («Content-Type: application / octet-stream») и прочитайте файл изображения.

2
ответ дан 24 November 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: