我要上传使用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.
} });
- OK,到目前为止,我可以上传文件,并从servlet的我可以给一个成功的消息。
- 我在形式上面板onSubmitCompleate事件与处理它,
- 感谢配发。
- 让我问一两件事,是有反正我可以显示上传的文件,将其保存到数据库之前?
- 即,实际上我需要上传一个文件,文本区域,告诉有关文件的详细信息提供复合材料部件。
- 当用户选择要上传的文件,我想给上传的文件的显示(这样他就可以确保正确的文件被上传)
- 它将被保存在整个表单被提交到数据库。
我猜你想允许用户使用GWT的FileUpload控件上传文件,然后不希望处理它在服务器端。 要在客户端的字节数组表示。
>文件上传对话框 - - >选择文件 - 文件处理浏览器通常的步骤>与文件提交表单服务器 - >进程文件服务器 - >发送回处理文件,以客户为响应(串)。
如果你想避免上面的步骤,并在浏览器中处理文件是没有办法做到这一点在当前的JavaScript。 像Flash,小程序,Silverlight的或ActiveX并行技术可能的帮助。 正确的做法在未来将使用HTML5文件API来追求的。
如果你不希望使用传统的技术,如闪存/小应用程序,然后对HTML5的FileReader的API可以探讨。 但是代价是你需要检查是否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
参考 -
- http://www.html5rocks.com/en/tutorials/file/dndfiles/
- HTML5文件API作为阅读文本和二进制
您可以使用流动的代码获取文件名及其在客户端扩展(在你的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);
}
});
你不能从一个GWT的FileUpload控件在用户的设备上获取文件的绝对路径。
你并不需要一个文件的绝对路径上传,并将其存储为一个字节数组。
GWT文档提供了如何使用上传文件控件的例子:
http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/ui/FileUpload.html