GWT中的java文件读取器
我有一个问题:我想在我的GWT应用程序中实现一个文件读取器,它允许用户上传一个文件并处理它的内容(在这个特殊的例子中,我谈论的是HTML)。我是如何认识到这一点的?据我所知,没有办法使用Java常用的BufferedReader。 到目前为止,我唯一发现的是:
try {
Request r = new RequestBuilder(RequestBuilder.GET, file).sendRequest("", new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
String text = response.getText();
System.out.println("1234");
}
@Override
public void onError(Request request, Throwable exception) {
System.out.println("456");
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但如果没有“文件选择器”对话框,这将没有多大帮助
我真的很感谢你的帮助
问候
# 1 楼答案
您无法实现客户端文件读取器,这仅仅是因为JavaScript的限制。客户端GWT代码被编译为JavaScript代码,然后JavaScript在浏览器中执行。它无法访问本地文件或其他内容
检查此文件上载:http://gwt.google.com/samples/Showcase/Showcase.html#!CwFileUpload
# 2 楼答案
下面是使用GWT Elemental API的文件读取器在客户端读取文件的另一种方法
https://gist.github.com/branflake2267/180b69b9a29987214643f62fb279151f
# 3 楼答案
您可以使用FileUpload将文件上载到服务器,然后立即使用RequestBuilder或GWT RPC将文件从服务器下载到客户端,然后在客户端使用它。您将无法使用InputStreams或Reader,因为GWT实际上并没有模拟它们(严格来说不是这样,请参见下文)
如果是HTML,你需要小心——允许用户生成HTML到页面上有各种各样的安全隐患。GWT安全HTML机制可以用来解决其中一些问题,但这仍然取决于您来管理
顺便说一句,创建一个在GWT-java中工作的streams/Reader实现是很简单的。木卫一。InputStream在GWT中基本上可以正常工作,但我不确定您是否可以出于许可的原因复制这个类。Apache Harmony项目包括一些实现,您可以在没有这些限制的情况下“复制”
# 4 楼答案
你看过这个:https://developers.google.com/appengine/kb/java?hl=en#readfile吗
# 5 楼答案
GWT中没有现成的FileReader API。您可以在Firefox/Chrome的JS Api http://www.html5rocks.com/en/tutorials/file/dndfiles/之上构建自己的浏览器,您必须使用某种IE插件(例如flash)才能使其在任何地方都能工作