首页 > 解决方案 > 在客户端生成可下载的文件流

问题描述

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

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

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

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

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

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

标签: javascriptbrowsergwtdownload

解决方案


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

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

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

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


推荐阅读