我写了一个用于上传文件的Servlet。在UI上,我想在GWT中显示文件上传的进度条。如何获得文件上传速度?
答案 0 :(得分:3)
在没有依赖“服务器推送”的服务器端帮助程序的情况下执行此操作的唯一方法是使用XMLHttpRequest
发送表单或文件并使用其进度事件(基本上支持everywhere but IE,因此你需要回退到IE中的基本形式)。要使用GWT,您必须使用JSNI。
如果您绝对需要支持IE(我的意思是显示上传进度,因为您可以轻松地降级到标准表单上传),您需要服务器告诉客户端进度;这意味着你需要一个带有“服务器推送”的反向通道。最简单的方法是使用GWTUpload或类似的第三方库。
要显示,您可以使用<progress>
element。在GWT中,最简单的方法是在HTMLPanel
内通过UiBinder使用它:将其绑定到Element
@UiField
并使用setPropertyDouble
等修改其属性。围绕通过Document.get().createElement("progress")
创建的进度元素创建Widget
相对容易。或者您可以使用第三方库(GWT-Bootstrap或其他)或从<div>
元素和CSS创建进度条。同样,它取决于您希望/需要支持哪些浏览器。