Vaadin Flow Upload组件-流式上传?



我正在上传非常大的文件,这超过了可用的内存,因此我使用FileBuffer作为接收器。不幸的是,当上传一个大文件时,需要很长时间来保存它。相反,我宁愿在文件还在上传的时候就开始处理它。

那么是否有一种方法可以接收作为流的上传?或者我可以实现我自己的Receiver,但是我还需要在那个Receiver中实现我的整个处理逻辑吗?

是的,你可以实现你自己的Receiver;像FileBufferMemoryBuffer这样的内置接收器只是覆盖基本用例的助手。Receiver接口很简单:

public interface Receiver extends Serializable {
/**
* Invoked when a new upload arrives.
*
* @param fileName
*            the desired filename of the upload, usually as specified by
*            the client
* @param mimeType
*            the MIME type of the uploaded file
* @return stream to which the uploaded file should be written
*/
OutputStream receiveUpload(String fileName, String mimeType);
}

你的任务是为上传组件提供OutputStream来进行写入;在FileBuffer的情况下,类正在创建一个File对象和一个FileOutputStream。如果您想自己处理流,您可以扩展FileOutputStream或创建自定义OutputStream并实现write方法。BufferedOutputStream也是一个很好的选择。

最新更新