如何在Vaadin中创建一个上载(大,即〜400MB)字节流服务?

时间:2019-01-02 18:21:00

标签: vaadin

在几分钟前的较早帖子中,我问了一个有关在vaadin中创建常规Web服务的“一般性”问题:How can one create webservices in Vaadin 12?

但是,我主要需要支持的一种特殊情况是通过https上传大型(例如,约400MB)字节流对象,这些对象大概是通过https“ post”命令发送到Vaadin的(我提供了提薪)我以为Vaadin内置了对上传文件的支持(我想这实际上是字节流的后命令),然后在这里看到了对StreamReceiver的引用:{{3 }}

听起来像是自定义文件导入器,但是我找不到任何(简单或几乎完整的)使用示例。理想情况下,只需要几行Java来显示字节流的“接收”,以及几行快速的行(理想情况下在Java中),这些行“发布”到receivestream的url就是显示如何手动上传字节的所有步骤在Vaadin完成。 (在DropWizard&Jersey中,我可以很容易地找到这样的示例,但是我不确定如何在Vaadin中获得这种控制级别。)

(非常小的好处:post命令是否有大小限制?例如,可以发送和接收超过4GB的字节流吗?)

1 个答案:

答案 0 :(得分:0)

在Vaadin中,Upload API已针对流传输到文件进行了优化(不同于像Servlet和JAX-RS API中那样处理流)。一种方法是先流传输到临时文件,然后在文件完全位于服务器端时处理临时文件中的数据。

或者,您可以使用Flow Viritin add-on和一个辅助类UploadFileHandler,该类为您和API提供了从InputStream读取内容的方式,就像使用Servlet API一样。请参见this test中的用法示例。

这不是第一次被问到,实际上我有一个关于该主题的更详细的博客草案。发布该链接后,我将为其添加链接。