【问题标题】:How do I stream a dynamically generated CSV file to the browser for download in Spring MVC如何将动态生成的 CSV 文件流式传输到浏览器以在 Spring MVC 中下载
【发布时间】:2017-04-26 17:23:46
【问题描述】:

我需要允许用户从浏览器(Java/Spring MVC 4.x 应用程序)下载动态生成的大型 CSV 文件(约 500K 行)我不想先创建整个文件并拥有浏览器长轮询服务器以确定它何时完成——相反,我想立即开始下载并让服务器在新的行/字节可用时流式传输响应。

我尝试使用 ServletOutputStream/PrintWriter 在文本可用时添加文本,然后刷新缓冲区。但是,在控制器方法返回之前,浏览器似乎不会开始下载。 (在调用 flushBuffer() 后,您会看到该文件显示为下载文件,并在 Chrome 中显示“正在启动”消息)。

有没有更好的方法来做到这一点?我看到 StreamingResponseBody 是在 Spring 4.2 中引入的,但如果可能的话,我宁愿不升级。 Spring

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    使用 ServletOutputStream/PrintWriter 在文本可用时添加文本,然后刷新缓冲区实际上似乎可行... Chrome 将显示“开始下载”一段时间,然后缓慢显示下载增加的大小,如预期.

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多