2 回答
TA贡献1155条经验 获得超0个赞
大量编辑:您的问题的实际解决方案是您Upload在 java 类中实例化<vaadin-upload id="upload" nodrop/>了以及在 java 代码 ( @Id("upload") private Upload upload;) 中。您现在可以在 java 类中使用upload.setReceiver(buffer);.
public class MyView implements PolymerTemplate<Model> {
@Id("upload") // com.vaadin.flow.component.polymertemplate
private Upload upload; // NO INSTANTIATION!
private private final MemoryBuffer buffer = new MemoryBuffer();
public MyView (){
upload.setReceiver(buffer);
upload.addSucceededListener(event -> {
System.out.println(event.getFileName());
System.out.println(buffer.getInputStream());
});
}
}
我最初的回答是使用与您的问题无关的不必要的替代方法(我起初是这么认为的),但有助于找到真正的解决方案。
TA贡献1773条经验 获得超3个赞
最好的解决方案取决于您的上下文,主要是您的后端如何接受数据?它是否接受可以读取数据的输入流,是否为您提供写入数据的输出流,或者是否有一个简单的 byte[] 来缓冲内容。
如果您在表单中使用 Binder,则可以使用 Viritin 插件中的 ByteArrayUploadField,它直接绑定到您可能在域对象中拥有的 byte[] 类型。
我最近写了一篇文章,解释了 Vaadin Upload组件的功能。检查以获取更多详细信息。
添加回答
举报