【问题标题】:Electron - How to save base64 dataUrl to fileElectron - 如何将base64 dataUrl保存到文件
【发布时间】:2017-10-23 14:42:33
【问题描述】:

我正在处理一个现有的 Electron 项目(将 Web 应用程序转换为桌面应用程序),该项目的任务是将屏幕上的内容导出为 pdf/png/jpg。

情况如下:

  1. 桌面应用程序是纯粹的客户端代码,它不连接到任何 API 或服务器(以防万一您建议使用 Nodejs 服务器端代码的解决方案)
  2. 我已经从画布对象中获得了 dataUrl(它是文件的 base64 字符串)

如何将该 dataUrl 保存到文件 (pdf/png/jpg) 中?

以下是我尝试过的一些方法:

  1. 好旧的 window.location = dataUrl(没有任何反应)
  2. 在div里面创建一个表单,action=dataUrl,然后提交表单

两种方法都不行!

非常感谢

【问题讨论】:

  • 您可以使用带有download 属性和href 设置为data URI<a> 元素
  • 将其转换为blob 并将其写入文件。
  • @BenFortune:谢谢。你能在这里提供一个示例代码吗?

标签: javascript node.js base64 electron


【解决方案1】:

要进行下载,data URI 的 MIME 类型需要更改为 "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();

使用带有download 属性的<a> 元素

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

参见How to download a file without using <a> element with download attribute or a server??

【讨论】:

  • 谢谢@guest271314。我尝试了两种方法,但它不起作用。控制台日志没有错误,但文件没有下载
  • @HoangTrinh 没有尝试过电子。环境是window 和 HTML document
  • prntscr.com/h0z341 是的,有window,也有document,但是在Electron中就不行了,这个环境好诡异
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 2020-10-24
  • 2016-12-03
  • 2016-08-13
  • 1970-01-01
  • 2017-03-23
  • 2013-12-03
  • 2021-12-28
相关资源
最近更新 更多