我正在寻找从GWT应用程序实现POST多部分文件上传进度条的方法。
我已经了解了开源GWTUpload lib和GWT AJAX请求。
但我无法对服务器端进行任何更改,只是客户端。
我发现Chrome以某种方式处理了这样的进展(http://oi58.tinypic.com/2w22ekm.jpg)。我怎么能找回它?
答案 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;
});