Электрон - Как сохранить base64 dataUrl в файл

1

Я работаю с существующим проектом Electron (конвертировать веб-приложение в настольное приложение), у которого есть задача экспортировать содержимое на экран в pdf/png/jpg.

Вот ситуация:

  1. Настольное приложение - это чисто клиентский код, он не подключается ни к одному API или серверу (на всякий случай, если вы предлагаете решение с использованием кода на стороне сервера Nodejs)
  2. Я уже получил dataUrl из объекта canvas (это строка base64 файла)

Как я могу сохранить этот dataUrl в файл (pdf/png/jpg)?

Вот несколько способов, которыми я пытался:

  1. Хороший старый window.location = dataUrl (ничего не происходит)
  2. Создайте форму внутри div, action = dataUrl, затем отправьте форму

Оба способа не работают!

большое спасибо

  • 0
    Вы можете использовать элемент <a> с атрибутом download и значением href для data URI
  • 0
    Преобразуйте его в BLOB- объект и запишите в файл.
Показать ещё 1 комментарий
Теги:
base64
electron

1 ответ

0

Для начала загрузки тип MIME data URI должен быть изменен на "application/octet-stream"

var dataURL = "data:text/plain,123";
var form = document.createElement("form");
form.action = dataURL.replace(/:[\w-/]+(?=,)/, ":application/octet-stream");
form.method = "GET";
document.body.appendChild(form);
form.submit();

Использование элемента <a> с атрибутом download

var dataURL = "data:text/plain,123";
var a = document.createElement("a");
a.download = "file";
a.href = dataURL;
document.body.appendChild(a);
a.click();

См. Также Как загрузить файл без использования элемента <a> с атрибутом загрузки или сервером? ?

  • 0
    Спасибо @ guest271314. Я пробовал оба пути, но это просто не работает. Нет ошибки в журнале консоли, но файл не загружен
  • 0
    @HoangTrinh Не пробовал электрон. Является ли среда window и HTML- document ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню