我想使用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.
} });
答案 0 :(得分:4)
我猜你想允许用户使用GWT Fileupload小部件上传文件,然后不希望在服务器端处理它。 你想要一个字节数组表示在客户端。
文件处理的常用步骤 浏览器 - >文件上传对话框 - >选择文件 - >将带有文件的表单提交给服务器 - >服务器上的进程文件 - >将处理后的文件作为响应发送回客户端(字符串)。
如果您想避免上述步骤并在浏览器中处理该文件,则无法在当前的javascript中执行此操作。 Flash,Applet,Silverlight或Activex等并行技术可能会有所帮助。将来要采用的正确方法是使用 HTML5文件apis 。
如果您不希望使用像flash / applet这样的传统技术,那么可以探索FileReader上的HTML5 apis。但是,需要权衡的是检查浏览器是否支持api。
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)
您无法从GWT FileUpload小部件获取用户设备上文件的绝对路径。
您不需要文件的绝对路径来上传它,并将其存储为字节数组。
GWT文档提供了如何使用“上载文件”窗口小部件的示例: