我正在寻找一种使用Google网页工具包通过自定义进度栏上传文件的方法。我不是在寻找显示自己进度条的插件,而是在寻找可以调用我的回调方法并通知进度的东西,这样我就可以显示自己的进度条。
如果那不可能,那么我想知道如何访问HTML5 File API,这样我就可以构建自己的文件上传器小部件。
有任何想法吗?
谢谢。
GWT中存在许多问题,因此很难解决:
FormData
GWT中没有对象,因此您必须使用JSNI来获得对象。RequestBuilder
不支持发送FormaData
,仅支持字符串。RequestBuilder
不支持上传或下载进度通知。FileUpload
不支持多属性。幸运的是,gwtquery 1.0.0具有许多有助于解决问题的功能。
在这里,您有一个有效的示例(只有很少的代码行),该示例在所有支持HTML5文件api的浏览器中均可使用:
import static com.google.gwt.query.client.GQuery.*;
[...]
final FileUpload fileUpload = new FileUpload();
RootPanel.get().add(fileUpload);
$(fileUpload)
// FileUpload does not have a way to set the multiple attribute,
// we use gQuery instead
.prop("multiple", true)
// We use gQuery events mechanism
.on("change", new Function() {
public void f() {
// Use gQuery utils to create a FormData object instead of JSNI
JavaScriptObject form = JsUtils.runJavascriptFunction(window, "eval", "new FormData()");
// Get an array with the files selected
JsArray<JavaScriptObject> files = $(fileUpload).prop("files");
// Add each file to the FormData
for (int i = 0, l = files.length(); i < l; i++) {
JsUtils.runJavascriptFunction(form, "append", "file-" + i, files.get(i));
}
// Use gQuery ajax instead of RequestBuilder because it
// supports FormData and progress
Ajax.ajax(Ajax.createSettings()
.setUrl(url)
.setData((Properties)form))
// gQuery ajax returns a promise, making the code more declarative
.progress(new Function() {
public void f() {
double total = arguments(0);
double done = arguments(1);
double percent = arguments(2);
// Here you can update your progress bar
console.log("Uploaded " + done + "/" + total + " (" + percent + "%)");
}
})
.done(new Function() {
public void f() {
console.log("Files uploaded, server response is: " + arguments(0));
}
})
.fail(new Function() {
public void f() {
console.log("Something went wrong: " + arguments(0));
}
});
}
});
另一个选择是使用gwtupload,它支持任何浏览器,并且带有一些不错的小部件和进度条,即使您可以插入自己的进度和状态小部件。
它尚未使用HTML5 File
api,而是基于服务器侦听器的ajax解决方案。不过,它将在将来的版本中支持html5,并回退到旧浏览器的ajax机制。当gwtupload支持此功能时,您无需修改代码中的任何内容。
以下是场景: 当我从Firebase存储访问文件时: 我从存储桶(.html、.png、.zip等)获取文件(小,但不超过2MB)。 将文件存储在我本地存储中,这样应用程序就不需要再次下载它,从而消耗服务器的带宽。 每次应用程序需要时从本地存储中使用它。 当我从Firebase宿主访问文件时: null 主持的优点:会更快。链接 PS: 1。我关心的是带宽而不是安全性。
问题内容: 关于此问题,有什么方法可以将[文件从ASP.NET应用程序直接上传到Amazon S3并具有进度条? -—编辑---- 两天后,仍然没有直接的运气。发现了一件看起来很有前途但又不是免费的东西:http : //www.flajaxian.com/ 使用Flash通过进度条直接上传到S3。 问题答案: 我也在寻找解决方案。也许这会有所帮助, 来自AWS Dev Commnity, 但在许
本文向大家介绍jQuery实现文件上传进度条特效,包括了jQuery实现文件上传进度条特效的使用技巧和注意事项,需要的朋友参考一下 上传进度条通常是由前面jquery加后端了脚本器脚本来实现了,今天我们介绍的是一款基本php+jQuery实现文件上传进度条效果的例子,具体细节如下。 最近呢,一个项目做一个进度条的效果出来,这个之前还真没做过。刚好这周没什么东西了,就拿这个来充一下数吧。 文件上传,
问题内容: 对于使用Apache的HTTP客户端(org.apache.http.client)上传文件,我具有以下代码: 效果很好,但是现在我想要一个进度条来显示文件上传的进度。如何做到这一点?我在使用Java的文件上传(带有进度栏)中找到了一个代码段,但是它是为Apache HTTP Client3(org.apache.commons.httpclient)设计的,而RequestEntit
本文向大家介绍原生JS上传大文件显示进度条 php上传文件代码,包括了原生JS上传大文件显示进度条 php上传文件代码的使用技巧和注意事项,需要的朋友参考一下 JS原生上传大文件显示进度条,php上传文件,供大家参考,具体内容如下 在php.ini修改需要的大小: upload_max_filesize = 8M post_max_size = 10M memory_limit = 2
问题内容: 我想显示使用servlet上传的上传进度栏。我尝试了iFrame技术Ajax。页面未重新加载,文件也被更新。但是,进度条没有到来。是否有可用于JavaServlts的jQuery进度插件? 谢谢!! 问题答案: 我强烈建议使用jQuery Uploadify 插件进行Ajax文件上传。它还带有进度条。您可以在其演示页面上找到示例。 与JSP /Servlet集成并不难。您基本上可以使“