4

我想使用 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 事件中处理了它,
  • 谢谢分配。
  • 让我再问一件事,在将文件保存到数据库之前,我是否可以显示上传的文件?
  • 即,实际上我需要提供一个复合组件来上传文件和文本区域以告知有关文件的详细信息。
  • 当用户选择要上传的文件时,我想显示上传的文件(这样他就可以确保上传正确的文件)
  • 当整个表单提交时,它将被保存到数据库中。
4

3 回答 3

4

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

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

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

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

HTML5 文件阅读器

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

参考 -

于 2012-12-28T04:32:38.293 回答
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);
  }
});
于 2012-12-27T18:32:13.193 回答
1
  1. 您无法从 GWT FileUpload 小部件获取用户设备上文件的绝对路径。

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

GWT 文档提供了如何使用 Upload File 小部件的示例:

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

于 2012-12-28T09:41:00.443 回答