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

时间:2015-02-20 21:55:52

标签: javascript file download dart binary-data

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

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您想开始下载,可以采用这种方式:

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

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

  3. 代码

    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,只有不推荐使用的FileSystem API,您可以使用它来保存持久数据,但我想您想要下载。