Page tree
Skip to end of metadata
Go to start of metadata

Die Upload-Komponente ermöglicht den Zugriff auf das lokale Dateisystem des Client, um beliebige Dateien auszuwählen und anschließend auf den Server hochzuladen.

Variante 1: Property "Immediate = false" 

Die Komponente besteht aus einem Button, der den lokalen Dateimanager aufruft und die Auswahl einer Datei ermöglicht sowie aus einem zweiten Button, der den Upload-Vorgang startet.
Zwischen den Buttons wird der Name der ausgewählten Datei angezeigt. Wichtig: Der Upload startet erst, wenn der Button "Upload" gedrückt wird.

Variante 2: Property "Immediate = true" 

Die Komponente besteht aus nur einem Button. Dieser löst den Filechooser und den Upload sofort aus.  Wichtig: Der Upload wird sofort nach der Dateiauswahl ausgelöst.


Die Upload-Komponente benötigt einen "Receiver", der auf Serverseite die Datei empfängt und weiterverarbeitet. Der Receiver kann im Konstruktor oder im INIT-Event des jeweiligen Fensters initialisiert werden. Siehe CodeBeipspiel unten.

Wichtige Properties:
  • ButtonCaption - Beschriftung des Upload-Buttons.
  • Caption - Zeigt den Text als Beschriftung an.
  • Receiver - Der Receiver ist ein Objekt, das die Verarbeitung der Datei auf Serverseite übernimmt.
  • TabIndex - Definiert die Reihenfolge im Tab-Index. Der Tab-Index definiert die Reihenfolge mehrerer UI-Komponenten, die durch Drücken der Tab Taste nacheinander selektiert werden.
Wichtige Events:
  • uploadFailed - Wird ausgelöst, wenn der Upload fehlschlägt.
  • uploadFinished - Wird ausgelöst, sobald der Upload beendet ist. Zu diesem Zeitpunkt steht noch nicht fest, ob der Upload erfolgreich war oder nicht.
  • updateProgress - Wird regelmäßig während des Uploads ausgelöst. Damit ist es möglich, den Fortschritt des Uploads zu verfolgen.
  • uploadStarted - Wird ausgelöst, sobald der Upload begonnen hat.
  • uploadSucceeded - Wird ausgelöst, sobald der Upload beendet ist und erfolgreich war.
Databinding:
  • Kein Databinding vorhanden. 
Examples:
  • Upload einer Datei


public class MainView extends XdevView {

	File file;

	public MainView() {
		super();
		this.initUI();

		final Receiver receiver = new Receiver() {

		    @Override
		    public OutputStream receiveUpload(final String filename, final String mimeType) {
		        // Create upload stream to write to

		        FileOutputStream fos = null;
		        try {

		            // Get path to servlet's temp directory
		            final File temporaryDirectory = (File) VaadinServlet.getCurrent().getServletContext().getAttribute(ServletContext.TEMPDIR);

		            // Concatenate temporaryDirectory with filename and open the file for writing.
		            MainView.this.file = new File(temporaryDirectory, filename);

		            // Create the output stream
		            fos = new FileOutputStream(MainView.this.file);

		        } catch (final java.io.FileNotFoundException e) {
		            Notification.show("Could not open file", Type.ERROR_MESSAGE);
		            return null;
		        }
		        return fos;
		    }
		};
		// Set Receiver for upload component
		this.upload.setReceiver(receiver);
	}


  • No labels