我想读取文件的内容并将其存储在数组中。 我有一个使用formPanel和formupload浏览文件的代码。
如何读取文件并存储在数组中。
任何示例代码都会提供很好的帮助。
答案 0 :(得分:3)
您可以使用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]);
}-*/;
答案 1 :(得分:2)
GWT客户端代码只是JavaScript,并受到浏览器沙箱模型中任何常规JavaScript所受限制的限制。
也就是说,任何浏览器都无法从JavaScript获得本地文件访问权限。
文件对话框以及由此产生的向服务器的传输由浏览器处理,并且不能以任何方式用于JavaScript代码。
您必须将文件上传到服务器,然后在服务器上处理该文件,并通过从服务器将数据发送回客户端来显示您需要显示的内容。
答案 2 :(得分:2)
尝试使用GWT中的元素库:
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/
答案 3 :(得分:0)
1)将文件上传到您的服务器(例如使用gwt-upload)
2)然后从客户端向服务器发出请求以检索文件的字节
答案 4 :(得分:0)
您可以使用Flash或Java Applet在客户端执行此操作。但那些很复杂,可能不是很漂亮的解决方案。
在GWT中查看GwtAI for Java Applet集成: http://code.google.com/p/gwtai/