第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在我的 Vaadin 服務(wù)中接收文件內(nèi)容?

如何在我的 Vaadin 服務(wù)中接收文件內(nèi)容?

偶然的你 2022-05-21 14:09:55
我想在我的 Web 應(yīng)用程序中添加一個上傳按鈕。在 HTML 模板中,我添加了:<link rel="import" href="../../../bower_components/vaadin-upload/src/vaadin-upload.html"><h2 id="header-Upload">Upload</h2><vaadin-upload nodrop/>我現(xiàn)在想在我的后端 Vaadin 進程中接收流。然后可以將該流插入數(shù)據(jù)庫中。https://vaadin.com/components/vaadin-upload/html-examples/upload-basic-demos上的文檔未提供此信息。我相信我應(yīng)該以某種方式將 a 鏈接StreamReceiver到相關(guān)<vaadin-upload>問題,但我不知道該怎么做。我正在使用 Vaadin Flow(版本 12)。附加信息我嘗試了以下方法:在 HTML 中:<vaadin-upload id="upload" nodrop/>在 Java 中:public class MyView extends PolymerTemplate<Model> {    private final MemoryBuffer buffer = new MemoryBuffer();    @Id("upload")    private final Upload       upload = new Upload(buffer);    public MyView() {        upload.addSucceededListener(event -> {            System.out.println(event.getFileName());            System.out.println(buffer.getInputStream());        });    }}當(dāng)我上傳文件時,出現(xiàn)以下異常:[qtp162821120-20] ERROR com.vaadin.flow.server.DefaultErrorHandler - com.vaadin.flow.server.UploadException: Upload failed    at com.vaadin.flow.server.communication.StreamReceiverHandler.streamToReceiver(StreamReceiverHandler.java:429)Caused by: java.lang.IllegalStateException: Upload cannot be performed without a receiver set    at com.vaadin.flow.component.upload.Upload$DefaultStreamVariable.getOutputStream(Upload.java:581)    at com.vaadin.flow.server.communication.StreamReceiverHandler.streamToReceiver(StreamReceiverHandler.java:358)
查看完整描述

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)為的),但有助于找到真正的解決方案。


查看完整回答
反對 回復(fù) 2022-05-21
?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊

最好的解決方案取決于您的上下文,主要是您的后端如何接受數(shù)據(jù)?它是否接受可以讀取數(shù)據(jù)的輸入流,是否為您提供寫入數(shù)據(jù)的輸出流,或者是否有一個簡單的 byte[] 來緩沖內(nèi)容。

如果您在表單中使用 Binder,則可以使用 Viritin 插件中的 ByteArrayUploadField,它直接綁定到您可能在域?qū)ο笾袚碛械?byte[] 類型。

我最近寫了一篇文章,解釋了 Vaadin Upload組件的功能。檢查以獲取更多詳細(xì)信息。


查看完整回答
反對 回復(fù) 2022-05-21
  • 2 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號