具有安全过滤器和浏览器兼容性的GWT文件上载

时间:2012-11-20 15:21:56

标签: file gwt file-upload input upload

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

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

  • 使用方法such as this来使用FileUpload对象和FormPanel。但是,我的组织使用安全筛选器,该筛选器需要设置标头才能与服务器通信。我知道无法为FormPanel设置标头。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

从版本0.3.2起,Firefox工作正常

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

答案 1 :(得分:1)

使用lib-gwt-file API是实现这一目标的最佳方式,因为它封装了GWT的HTML5 File API,这使得本地文件系统可以访问;据我所知,本地文件系统访问是不可能的任何其他方式。不幸的是,IE 9及更低版本不支持File API,因此这就是lib-gwt-file不起作用的原因。在IE10之前,文件API未引入IE。

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