微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在客户端生成可下载的文件流

如何解决在客户端生成可下载的文件流

我使用 GWT,但这可能通常适用于 JavaScript。

我从服务器下载了低个位数兆字节的原始数据。我想从原始数据生成一个可下载的 CSV 文件,但我想在客户端进行,因为与原始数据相比,CSV 会很大,并且通过网络传输所有这些都是愚蠢的。

一次生成整个文件内容,然后然后提示用户下载似乎是可能的,但是将数兆字节的字符串连接成一个 URL 是愚蠢的。

在任何理智的语言中,我都会从响应流读取到缓冲区,处理该缓冲区,生成一大块 CSV 文本并将其写入文件流。重复直到处理完所有原始数据。

这样的事情在 JavaScript 中可行吗?
GWT 对此有预定义的机制吗?

理想情况下,还应该有一种显示进度的方式。

解决方法

您可以使用浏览器的 Fetch API。

当您调用 fetch 时,它将返回一个 Response 对象。

Response.body getter 返回一个 ReadableStream 对象,它是您想要的响应流。

可以使用 GWT elemental2 库在 GWT 中访问浏览器 API。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。