我目前正在处理一个文件转换程序,一旦文件被上传,它会将文件转换为不同的文件格式(ppt,pdf),这通常需要很长时间,具体取决于文件大小。由于文件转换发生在后端,我希望用户看到文件转换的进度(如进度条,例如“52%正在转换的文件”),无论如何,我可以向用户显示当前进度文件转换(发生在后端)?在文件转换期间,我只能显示状态(数字(由我使用的API提供))
我不知道从哪里开始可以有人提供一些见解或方法吗?
答案 0 :(得分:6)
如果您使用的是Struts2,请查看Execute and Wait Interceptor
。它会为您的任务创建新线程,该线程将在后台执行,同时您可以向用户显示一些进度。
在struts.xml
文件中为您的长时间操作添加execAndWait
拦截器,并定义两个结果wait
和success
。
<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中轮询此操作。
答案 1 :(得分:1)
你说的是:During file conversion I am only able to show the status(in numbers(provided by the API I am using))
这是多少?是转换文件的百分比?如果是,则只需导入jQuery UI
库并添加.progressbar()
答案 2 :(得分: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"/>
`