2 回答

TA貢獻(xiàn)1155條經(jīng)驗 獲得超0個贊
大量編輯:您的問題的實際解決方案是您Upload在 java 類中實例化<vaadin-upload id="upload" nodrop/>了以及在 java 代碼 ( @Id("upload") private Upload upload;) 中。您現(xiàn)在可以在 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());
});
}
}
我最初的回答是使用與您的問題無關(guān)的不必要的替代方法(我起初是這么認(rèn)為的),但有助于找到真正的解決方案。

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊
最好的解決方案取決于您的上下文,主要是您的后端如何接受數(shù)據(jù)?它是否接受可以讀取數(shù)據(jù)的輸入流,是否為您提供寫入數(shù)據(jù)的輸出流,或者是否有一個簡單的 byte[] 來緩沖內(nèi)容。
如果您在表單中使用 Binder,則可以使用 Viritin 插件中的 ByteArrayUploadField,它直接綁定到您可能在域?qū)ο笾袚碛械?byte[] 類型。
我最近寫了一篇文章,解釋了 Vaadin Upload組件的功能。檢查以獲取更多詳細(xì)信息。
添加回答
舉報