2012-02-14 56 views
2

我想读取文件的内容并将其存储在数组中。 我有一个代码来浏览使用formPanel和formupload的文件。在GWT中读取客户端上的文件

如何读取文件并存储在数组中。

任何示例代码都将非常有帮助。

回答

2

GWT的客户端代码只是JavaScript和由相同的限制,任何常规的JavaScript将受到在浏览器沙箱模型的约束。

也就是说,从任何浏览器都没有本地文件访问可用于JavaScript。

文件对话框和由此产生的传输到服务器由浏览器处理,并且JavaScript代码不以任何方式提供。

您必须将文件上传到服务器,然后在服务器上处理该文件,并通过从服务器将数据发送回客户端来显示需要显示的内容。从GWT

+2

您可以使用HTML5 FileReader。下面是它的一个实例:http://codepen.io/matt-west/pen/KjEHg – Craigo 2016-07-12 06:27:46

0

1)将文件上传到服务器(使用GWT上传的例子)

2)然后,让您的客户机向服务器发出请求来检索文件的字节

+0

:不能我第一次存储文件的内容在一个数组然后传输数组。 – NewCodeLearner 2012-02-14 15:22:43

0

你可以使用Flash或Java Applet在客户端完成所有操作。但这些都很复杂,可能不是很漂亮的解决方案。

有在GWT看看GwtAI的Java小程序的集成: http://code.google.com/p/gwtai/

2

尝试使用元素库:

http://www.gwtproject.org/articles/elemental.html

示例代码读取文件内容txtArea(所有客户的网站):

import elemental.client.*; 
import elemental.dom.*; 
import elemental.html.*; 
FileEntry fileEntry = (FileEntry)entry; 
FileCallback callback = new FileCallback() { 
    public boolean onFileCallback(File file) { 
    final FileReader reader = window.newFileReader(); 
    reader.setOnloadend(new EventListener() { 
     public void handleEvent(Event evt) { 
     txtArea.setText(reader.getResult().toString()); 
     } 
    }); 
    reader.readAsText(file); 
    return true; 
    } 
}; 
fileEntry.file(callback, errorCallback); 

本教程可能也有用: http://www.instantshift.com/2013/11/19/html5-features-with-gwt-elemental/

2

您可以使用HTML5文件阅读器。这样的事情:

@UiField FileUpload fileUploadWidget; 

JavaScriptObject files = fileUploadWidget.getElement().getPropertyJSO("files"); 

readTextFile(files); 

public static void fileLoaded(String fileContents) { 
    GWT.log("File contents: " + fileContents); 
} 

public static native void readTextFile(JavaScriptObject files) 
/*-{ 
    var reader = new FileReader(); 

    reader.onload = function(e) { 
     @com.example.YourClass::fileLoaded(*)(reader.result); 
    } 

    return reader.readAsText(files[0]); 
}-*/; 
+0

这是完美的,很棒的解决方案! – dynamphorous 2016-12-14 19:15:24

+0

伟大的解决方案。谢谢 – 2017-09-11 17:48:29