【问题标题】:Server side - Progress Bar服务器端 - 进度条
【发布时间】:2012-12-14 10:08:46
【问题描述】:

我目前正在开发一个文件转换程序,一旦文件上传,它会将文件转换为不同的文件格式(ppt,pdf),这通常需要很长时间,具体取决于文件大小。由于文件转换发生在后端,我希望用户看到文件转换的进度(类似于进度条,例如“52% 文件正在转换”)无论如何我可以向用户显示当前的进度文件转换(发生在后端)?在文件转换期间,我只能显示状态(以数字(由我正在使用的 API 提供))

我不知道从哪里开始,有人可以提供一些见解或方法吗?

【问题讨论】:

  • sitepoint.com/html5-javascript-file-upload-progress-bar 在纯简单的 JS 中 好的,它用于上传,但 XHR 请求是您的兴趣点。否则,您可以显示上传栏,而不是在上传结束后为加载栏设置动画,例如“正在转换您的文件...请稍候”
  • tpeczek.blogspot.in/2010/07/…有一个很好的教程
  • @roXon 我不是在说文件上传进度条,我的意思是后端有某个进程正在运行(文件转换)我想向用户展示它的进度
  • @Mukund_Roy 我用的是 JSP/Java。
  • 您需要采用以下三种方法之一;轮询(通常是 setInterval fn 中的 ajax)、长轮询(例如 COMET)或 WebSocket

标签: java javascript jquery ajax struts2


【解决方案1】:

简单的解决方案: 使用 Struts2-Jquery 标记

并使用 gif 图像在您的提交标签上定义指示器

例如。

 `<form action="...">
     <s:file ..../>
     <sj:submit indicator="imgId"> 
 </form>

 <img id="imgId" src="images/indicator.gif" alt="Loading..."     
  style="display:none"/>
     `

【讨论】:

    【解决方案2】:

    如果您使用的是 Struts2,请查看 Execute and Wait Interceptor。它会为您的任务创建新线程,该线程将在后台执行,同时您可以向用户显示一些进度。

    struts.xml 文件中,将execAndWait 拦截器添加到您的长时间运行的操作中并定义两个结果waitsuccess

    <action name="longRunningAction" class="...">
      <interceptor-ref name="defaultStack"/>
      <interceptor-ref name="execAndWait"/>
      <result name="wait">longRunningAction-wait.jsp</result>
      <result name="success">longRunningAction-success.jsp</result>
    </action>
    

    您仍然需要通过 AJAX 或简单的页面刷新在您的 JSP 中轮询此操作。

    【讨论】:

    • 真的需要“defaultStack”吗?
    • 嗯..是的。为什么要问?
    • 您将丢失在defaultStack 中定义的所有其他拦截器。
    【解决方案3】:

    你是说:During file conversion I am only able to show the status(in numbers(provided by the API I am using))

    这个数字是多少?是转换多少文件的百分比?如果是,那么只需要导入jQuery UI库并添加.progressbar()

    【讨论】:

    • 它不是百分比,它的范围是从 1 到 1000,1000 是完整的值
    • 但它确实呈指数级增长,或者它是一个随机数,代表某个转换阶段?
    • 它呈指数增长而不是随机数
    • 那么我猜你可以将这个数字除以 10,得到所需的百分比(从 1 到 100),并将这个数字提供给进度条。
    • 之后我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2010-11-16
    • 2015-12-12
    • 2015-01-19
    • 1970-01-01
    • 2017-05-28
    • 2011-03-27
    相关资源
    最近更新 更多