浏览器对POST多部分请求的进度百分比。 GWT

时间:2015-05-20 09:43:51

标签: post gwt upload progress-bar progress

我正在寻找从GWT应用程序实现POST多部分文件上传进度条的方法。

我已经了解了开源GWTUpload lib和GWT AJAX请求。

但我无法对服务器端进行任何更改,只是客户端。

我发现Chrome以某种方式处理了这样的进展(http://oi58.tinypic.com/2w22ekm.jpg)。我怎么能找回它?

1 个答案:

答案 0 :(得分:0)

由于XMLHttpRequest尚未实施进展,因此不会发送FormData,我会使用gwtquery Ajax

我在上一次GWT.create演示中做了example

final GQuery progress = $("<div>").css($$("height: 6px, width: 0%, background: #75bff4, position: absolute, top:0px")).appendTo(document);
GQuery fileUpload = $("<input type='file' multiple >").hide().appendTo(document);
fileUpload.trigger("click");
$(fileUpload).on("change", (e) -> {
  final JsArray<JavaScriptObject> files = fileUpload.prop("files");
  JavaScriptObject formData = JsUtils.jsni("eval", "new FormData()");
  for (int i = 0, l = files.length(); i < l; i++) {
    JsUtils.jsni(formData, "append", "file-" + i, files.get(i));
  }
  Settings settings = Ajax.createSettings().setUrl(uploadUrl).setData(formData).setWithCredentials(true);
  Ajax.ajax(settings)
     .done((o) -> {
       progress.remove();
       $("<img src='" + uploadUrl + "?show=file-0-0'>").css($$("position: absolute, top: 0")).appendTo(document);
     })
     .progress((a, b) -> {
       progress.animate("width:" + b + "%");
     });
  return true;
});