Vaadin Web应用开发教程(22):UI组件-Upload组件
来源:互联网 发布:过滤器 angular json 编辑:程序博客网 时间:2024/05/04 01:30
Upload 组件用于向服务器上传文件。它显示一个文件名输入框,一个文件选择按钮和一个上传确认按钮。
可以通过setButtonCaption 修改”Upload” 按钮的文字。对于”Browser” 按钮由于浏览器安全方面的考虑,难以修改它的外观,”Brower” 显示语言取决于浏览器本身。 因此如果你想保持”Upload” 语言显示的一致,你必须使用和“Browser”一样的语言。
通常情况上传的文件可以存放在文件系统,数据库或是临时存放在内存中,Upload 组件将上传的文件数据写到一个java.io.OutputStream 对象中,因此你可以使用你喜欢的方法来处理上传到服务器的文件。
使用Upload 组件,需要实现Upload.Receiver 接口来处理文件数据,它将在用户点击”upload”按钮后调用。
当文件上传结束后,成功与否Upload组件将触发Upload.FinishedEvent 事件。可以通过Upload.FinishedListener 接口来处理这个事件,事件参数包括文件名,MIME类型和文件长度。
下面的例子将上传的图像文件存放在/tmp/uploads 目录下 并显示最后上传的图像。
import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import com.vaadin.terminal.FileResource;import com.vaadin.ui.*;public class MyUploader extends CustomComponent implements Upload.SucceededListener, Upload.FailedListener, Upload.Receiver { Panel root; // Root element for contained components. Panel imagePanel; // Panel that contains the uploaded image. File file; // File to write to. MyUploader() { root = new Panel("My Upload Component"); setCompositionRoot(root); // Create the Upload component. final Upload upload = new Upload("Upload the file here", this); // Use a custom button caption instead of plain "Upload". upload.setButtonCaption("Upload Now"); // Listen for events regarding the success of upload. upload.addListener((Upload.SucceededListener) this); upload.addListener((Upload.FailedListener) this); root.addComponent(upload); root.addComponent(new Label("Click 'Browse' to "+ "select a file and then click 'Upload'.")); // Create a panel for displaying the uploaded image. imagePanel = new Panel("Uploaded image"); imagePanel.addComponent( new Label("No image uploaded yet")); root.addComponent(imagePanel); } // Callback method to begin receiving the upload. public OutputStream receiveUpload(String filename, String MIMEType) { FileOutputStream fos = null; // Output stream to write to file = new File("/tmp/uploads/" + filename); try { // Open the file for writing. fos = new FileOutputStream(file); } catch (final java.io.FileNotFoundException e) { // Error while opening the file. Not reported here. e.printStackTrace(); return null; } return fos; // Return the output stream to write to } // This is called if the upload is finished. public void uploadSucceeded(Upload.SucceededEvent event) { // Log the upload on screen. root.addComponent(new Label("File " + event.getFilename() + " of type '" + event.getMIMEType() + "' uploaded.")); // Display the uploaded file in the image panel. final FileResource imageResource = new FileResource(file, getApplication()); imagePanel.removeAllComponents(); imagePanel.addComponent(new Embedded("", imageResource)); } // This is called if the upload fails. public void uploadFailed(Upload.FailedEvent event) { // Log the failure on screen. root.addComponent(new Label("Uploading " + event.getFilename() + " of type '" + event.getMIMEType() + "' failed.")); }}
- Vaadin Web应用开发教程(22):UI组件-Upload组件
- Vaadin Web应用开发教程(17):UI组件-Select 组件
- Vaadin Web应用开发教程(18):UI组件-Table 组件
- Vaadin Web应用开发教程(19):UI组件-Tree 组件
- Vaadin Web应用开发教程(20):UI组件-MenuBar组件
- Vaadin Web应用开发教程(21):UI组件-Embedded组件
- Vaadin Web应用开发教程(23):UI组件-Form组件
- Vaadin Web应用开发教程(24):UI组件-ProgressIndicator组件
- Vaadin Web应用开发教程(25):UI组件-Slider组件
- Vaadin Web应用开发教程(26):UI组件-LoginForm组件
- Vaadin Web应用开发教程(27):UI组件-自定义组件
- Vaadin Web应用开发教程(24):UI组件-ProgressIndicator组件
- Vaadin Web应用开发教程(21):UI组件-Embedded组件
- Vaadin Web应用开发教程(7):UI组件概述
- Vaadin Web应用开发教程(8):UI组件-Label
- Vaadin Web应用开发教程(9):UI组件-Link
- Vaadin Web应用开发教程(10):UI组件-TextField
- Vaadin Web应用开发教程(11):UI组件-TextArea
- openstack nova基础知识——RabbitMQ
- QT编码风格
- 最近遇到的一些问题
- 老不能下载,分不够,加分啊
- openstack nova 基础知识——Kombu
- Vaadin Web应用开发教程(22):UI组件-Upload组件
- ConvertRgbToYuv intermediate variables should be double or float
- Android ApiDemos示例解析(127):Views->Layout Animation->2. List Cascade
- Convert Avi to Yuv420 matlab code
- C++编程中的四个调试小技巧
- js的关于对象创建的讲解
- 【PHP】文件操作及遍历文件夹
- C++预处理(一)(整理)
- C++调试技巧