1

好吧,我正在做一个网络应用程序,它在完成上传后处理文件,我希望用户能够以某种方式获得有关进度的一些信息。现在我正在考虑创建一个 jsp 进度页面,它会休眠 5 秒,然后生成一个请求并为其提供我们想知道进度的文件名。那么我该怎么做,或者有更好的方法吗?也许 JavaScript 可以执行所需的操作?那么大家有什么建议呢?谢谢。

4

2 回答 2

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);               
             }
         }
    });
}
于 2013-05-22T21:42:33.953 回答
0

定期(通过 javascript)轮询服务器(需要进度 API)以了解处理状态,并在您获得肯定结果时相应地更新页面。

于 2013-05-22T21:29:31.870 回答