我正在做一个Web应用程序,它在完成上传后处理文件,我想以某种方式让用户能够获得有关进度的一些信息。现在我想创建一个jsp进度页面,它会睡5秒,然后生成一个请求并提供我们想知道进度的文件名。那么我该怎么做,还是有更好的方法呢?也许JavaScript可以执行所需的操作?那么你们会建议什么?感谢。
答案 0 :(得分:1)
您需要使用ajax轮询服务器。如果您使用的是Java,则Apache FileUpload库会有一个名为ProgressListener的接口,您可以使用该接口来确定上载的进度。您可以跟踪收到的百分比,或者只在文件完成时将其标记为完整。在客户端,您每隔几秒检查一次进度,直到看到它完成。此外,如果您希望用户看起来保持在同一页面上,请尝试在提交时将表单的目标属性设置为0x0 iframe的ID。
如果你决定编写javascript代码,一个简单的轮询函数可能如下所示:
function poll(uploadId) {
$.ajax({
url: '/path/to/upload/status/servlet',
type: 'POST',
data: 'id=' uploadId,
dataType: 'json',
timeout: 10000,
error: function(err){
// handle error
},
success: function(data) {
var status = data["status"];
if (status == 'finished')
{
// completed upload logic
}
else
{
setTimeout(function() {
poll(uploadId);
}, pollingIntervalInMillis);
}
}
});
}
答案 1 :(得分:0)
定期(通过javascript)轮询服务器(需要进度API)以获取处理状态,并在获得肯定结果时相应地更新页面。