5

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

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

4

3 回答 3

6

如果您使用的是 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 中轮询此操作。

于 2012-12-29T13:24:08.643 回答
1

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

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

于 2012-12-29T12:32:45.767 回答
0

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

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

例如。

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

 <img id="imgId" src="images/indicator.gif" alt="Loading..."     
  style="display:none"/>
     `
于 2012-12-31T08:47:04.117 回答