1

我需要一种用户可以输入文件并在 GWT 面板中显示文件内容的方法。内容不需要发送到任何服务器,我更愿意将文件保留在客户端。我尝试了以下方法:

  • 使用库 lib-gwt-file。它在 Firefox 中完美运行,主要在 Chrome 中运行,在 Internet Explorer 中根本无法运行。我需要支持所有这些浏览器。我已经给图书馆的作者发了电子邮件,但没有收到回复。

  • 使用诸如此类的方法来使用 FileUpload 对象和 FormPanel。但是,我的组织使用安全过滤器,它需要设置标头才能与服务器通信。我了解无法为 FormPanel 设置标题。

  • 我已经调查了 GWT 的其他文件上传库,例如 GWTUpload,但它们并没有真正做到我想要的。我不想将文件上传到我的服务器,我只需要文件客户端的内容。

我没有想法,我不知道如何完成这个简单的任务。有没有人对其他方法或方式来克服我目前的障碍有任何建议?
谢谢。

4

2 回答 2

2

我现在可以完全回答我自己的问题了。Neeko 在上面是正确的,但 lib-gwt-file 在这个用例中不能正常工作。因此,我联系了该图书馆的制造商并解释了这些问题。他解决了我在 Chrome 中遇到的问题,并且使该库在 IE10 上运行良好。正如 Neeko 所说,不支持 IE9。

在 IE10 中,必须通过在 URL 末尾添加 &mode=typeArrays 来启用对 typedArrays 的支持。这是 IE 中的错误的一种解决方法,可能并不总是必要的。

在 Chrome 中,有一个 Webkit 错误,其中两次选择相同的文件将不再触发更改事件,因此无法连续两次上传相同的文件。在下一版本的 lib-gwt-file 中有一个解决方法。

Firefox 从 0.3.2 版开始可以正常工作

因此,如果其他人尝试使用此库并遇到这些问题,那么它现在应该更适合您。lib-gwt-file 的作者 Lukas Laag 对解决这些问题非常有帮助。

于 2012-11-26T15:09:10.607 回答
1

使用lib-gwt-file API是实现此目的的最佳方式,因为它封装了用于 GWT 的HTML5 File API,这使得本地文件系统访问成为可能;据我所知,本地文件系统访问是不可能的。不幸的是,IE 9 和更低版本不支持 File API,所以这就是 lib-gwt-file 不起作用的原因。File API 直到IE10才被引入 IE 。

编辑:根据这个SO answer,您可以通过 ActiveX 访问 IE 中的本地文件系统,但它是有限制的,要与 GWT 一起使用,您必须使用JSNI在 GWT 代码中手写 JavaScript。

于 2012-11-20T16:32:45.750 回答