javascript - Electron - 如何将 base64 dataUrl 保存到文件

标签 javascript node.js base64 electron

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

情况如下:

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

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

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

  1. 旧的 window.location = dataUrl(什么也没发生)
  2. 在div内创建表单,action = dataUrl,然后提交表单

这两种方法都行不通!

非常感谢

最佳答案

要进行下载,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();

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

关于javascript - Electron - 如何将 base64 dataUrl 保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46892163/

相关文章:

node.js - Gulp 在 Node app.listen() 被调用或移植时观察(livereload、nodejs 和 gulp)

javascript - Firefox 无法与位于 ws ://localhost:8080/的服务器建立连接

javascript - 通过 $sce 服务使用 ngModel 绑定(bind)输入字段

javascript - 带刻度的对数 jQuery Bootstrap slider

javascript - 快速回调中的 SetTimeout

javascript - 将 FileReader base64 存储为变量?

java - 使用 Java 将 Base64 转换为二进制

javascript - 使用 JavaScript 事件模拟悬停

node.js - Mongodb 已更新,但呈现旧信息

laravel - 如何使用laravel压缩上传的图像,转换为base 64并直接存储在数据库中