首页 文章

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

提问于
浏览
1

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

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

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

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

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

2 回答

  • 1

    使用lib-gwt-file API是实现这一目标的最佳方式,因为它封装了GWT的HTML5 File API,这使得本地文件系统可以访问;本地文件系统访问isn 't possible any other way as far as I know. Unfortunately, IE 9 and lower doesn' t支持File API,以便's why lib-gwt-file doesn' t工作 . 在IE10之前,文件API未引入IE .

    编辑:根据这个SO answer,您可以通过ActiveX访问IE中的本地文件系统,但它必须使用JSNI来手动编写GWT代码中的JavaScript .

  • 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在解决这些问题方面非常有帮助 .

相关问题