如何从GWT FileUpload组件中检索文件?

时间:2012-12-27 11:27:35

标签: gwt file-upload

我想使用GWT fileUploader组件

上传文件

我试过这样,

FileUpload fileUpload = new FileUpload();
filepload.addChangeHandler(new new ChangeHandler() {
    @Override
    public void onChange(ChangeEvent event) {
         // here i submit the form, and a response is created to client side to display success message.
    } });
  • 好的,到目前为止我可以上传一个文件,从servlet我可以给出成功的消息。
  • 我在表单面板的onSubmitCompleate事件中处理它,
  • 谢谢分配。
  • 让我再问一个问题,无论如何我可以在保存到数据库之前显示上传的文件吗?
  • 即,实际上我需要提供一个复合组件来上传文件和文本区域,以告知文件的详细信息。
  • 当用户选择要上传的文件时,我想要显示上传的文件(这样他就可以确保上传正确的文件)
  • 并在提交整个表单时将其保存到db。

3 个答案:

答案 0 :(得分:4)

我猜你想允许用户使用GWT Fileupload小部件上传文件,然后不希望在服务器端处理它。 你想要一个字节数组表示在客户端。

文件处理的常用步骤 浏览器 - >文件上传对话框 - >选择文件 - >将带有文件的表单提交给服务器 - >服务器上的进程文件 - >将处理后的文件作为响应发送回客户端(字符串)。

如果您想避免上述步骤并在浏览器中处理该文件,则无法在当前的javascript中执行此操作。 Flash,Applet,Silverlight或Activex等并行技术可能会有所帮助。将来要采用的正确方法是使用 HTML5文件apis

如果您不希望使用像flash / applet这样的传统技术,那么可以探索FileReader上的HTML5 apis。但是,需要权衡的是检查浏览器是否支持api。

HTML5 FileReader

FileReader包括四个用于异步读取文件的选项:

FileReader.readAsBinaryString(Blob|File) - The result property will contain the file/blob's data as a binary string.
FileReader.readAsText(Blob|File, opt_encoding) - The result property will contain the file/blob's data as a text string. 
FileReader.readAsDataURL(Blob|File) - The result property will contain the file/blob's data encoded as a data URL.
FileReader.readAsArrayBuffer(Blob|File) - The result property will contain the file/blob's data as an ArrayBuffer object.

GWT包装器的示例 - https://github.com/bradrydzewski/gwt-filesystem

参考 -

答案 1 :(得分:1)

您可以使用流动代码在客户端(在您的gwt代码中)获取文件名及其扩展名:

FileUpload fileUpload = new FileUpload();

Button uploadButton = new Button("Click");
uploadButton.addClickHandler(new ClickHandler() {
  public void onClick(ClickEvent event) {
    String filename = fileUpload.getFilename();
      Window.alert(filename);
  }
});

答案 2 :(得分:1)

  1. 您无法从GWT FileUpload小部件获取用户设备上文件的绝对路径。

  2. 您不需要文件的绝对路径来上传它,并将其存储为字节数组。

  3. GWT文档提供了如何使用“上载文件”窗口小部件的示例:

    http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/ui/FileUpload.html