¿Cómo puedo recibir el contenido del archivo en mi servicio Vaadin?

Absonegative:

Quiero añadir un botón de subida a mi aplicación web. En la plantilla HTML, añadí:

<link rel="import" href="../../../bower_components/vaadin-upload/src/vaadin-upload.html">

<h2 id="header-Upload">Upload</h2>
<vaadin-upload nodrop/>

ahora quiero recibir la corriente en mi proceso de back-end Vaadin. Esta corriente puede ser luego insertado en la base de datos.

La documentación sobre https://vaadin.com/components/vaadin-upload/html-examples/upload-basic-demos no proporciona esta información.

Creo que de alguna manera debería vincular una StreamReceivera la <vaadin-upload>que se trate, pero no estoy seguro de cómo hacer eso.

Estoy usando Vaadin Flow (versión 12).

Información Adicional

He intentado lo siguiente:

En HTML:

<vaadin-upload id="upload" nodrop/>

En 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());
        });
    }
}

Al cargar un archivo, me sale el siguiente excepció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)
kscherrer:

masiva Editar : La solución real a su problema era que las instancias de los Uploadde tu clase de Java, en las que debe Vaadin hacer esto (a causa de la plantilla de polímero) y se refieren a este componente de carga usando un identificador tanto en la plantilla html ( <vaadin-upload id="upload" nodrop/>) como así como en el código java ( @Id("upload") private Upload upload;). Ahora puede configurar el receptor de la carga en la clase Java utilizando 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());
        });
    }
}

Mi respuesta inicial fue el uso de un enfoque alternativo innecesaria que no estaba relacionado con su problema (me lo imaginaba en un principio), pero ayudó a encontrar la solución real.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=232556&siteId=1
Recomendado
Clasificación