希望将客户端生成的二进制文件保存到客户端计算机

Looking to save a client-side generated binary file to client machine

我需要将大量客户端生成的数据(二进制)保存到客户端系统。我查看了创建数据 URI,但数据量很大(应用程序生成的图像 PDF 文件超过 100 页)。除了数据 URI 之外,还有其他方法可以做到这一点吗?

谢谢!

如果您想开始下载,请按以下方式进行:

  1. 如果您要保存多个文件:将其打包成一个 zip 文件。我写了一个基于 dart 的 zip 库(可在 https://github.com/roberthartung/zip.dart 获得)。他们的关键点是使用 zip 文件格式来存档数据而不是压缩(因为这真的很慢)。

  2. 如果您只有一个文件(zip 或任何其他格式),您可以将其加载到 blob 中并让用户像这样下载 blob:

代码

Blob blob = new Blob(...);
AnchorElement a = new AnchorElement();
a.style.display = 'none';
document.body.append(a);
String url = Url.createObjectUrlFromBlob(blob);
a.href = url;
a.download = "file.name";
a.click();
Url.revokeObjectUrl(url);

对于 chrome 只有已弃用的文件系统 API,您可以使用它来保存持久数据,但我想您需要下载。