GWT中的文件阅读器

时间:2011-10-20 09:05:24

标签: java file gwt

我遇到了以下问题:我想在我的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();
    }

但是,就没有文件选择器对话框而言,这不会有帮助。

我真的很感谢你的帮助!

此致

5 个答案:

答案 0 :(得分:3)

GWT中没有准备好使用FileReader API。您可以在JS Api http://www.html5rocks.com/en/tutorials/file/dndfiles/上为Firefox / Chrome构建自己的游戏,并且您必须使用某种类型的IE插件(例如flash)才能使其在任何地方都可以使用

答案 1 :(得分:1)

您可以使用FileUpload将文件上传到服务器,然后使用RequestBuilder或GWT RPC立即将文件从服务器下载到客户端,然后您可以在其中使用它。您将无法使用InputStreams或Readers,因为这些实际上并未被GWT模拟(严格来说不是这样,见下文)。

如果它是HTML,您需要小心 - 在允许用户生成的HTML到页面上有各种安全隐患。 GWT SafeHTML机制可用于解决其中一些问题,但仍需由您来管理。

顺便说一下,创建一个在GWT中工作的流/阅读器的实现是微不足道的 - java.io.InputStream在GWT中几乎可以工作但是我不确定你是否可以只复制这个类用于许可原因。 Apache Harmony项目包括您可以在没有这些限制的情况下“复制”的实现。

答案 2 :(得分:1)

以下是使用GWT Elemental API使用文件阅读器在客户端读取文件的另一种方法。

https://gist.github.com/branflake2267/180b69b9a29987214643f62fb279151f

答案 3 :(得分:0)

由于JavaScript的限制,您无法实现客户端文件阅读器。客户端GWT代码被编译为JavaScript代码,然后JavaScript在浏览器中执行。它无法访问本地文件或其他任何内容。

选中此文件以进行文件上传:http://gwt.google.com/samples/Showcase/Showcase.html#!CwFileUpload

答案 4 :(得分:-1)