我目前正在开发一个文件转换程序,一旦文件被上传,它会将文件转换为不同的文件格式(ppt,pdf),这通常需要很长时间,具体取决于文件大小。由于文件转换发生在后端,我希望用户看到文件转换的进度(类似于进度条,例如“52% 文件正在转换”)无论如何我可以向用户显示当前的进度文件转换(发生在后端)?在文件转换期间,我只能显示状态(以数字(由我正在使用的 API 提供))
我不知道从哪里开始有人可以提供一些见解或方法吗?
我目前正在开发一个文件转换程序,一旦文件被上传,它会将文件转换为不同的文件格式(ppt,pdf),这通常需要很长时间,具体取决于文件大小。由于文件转换发生在后端,我希望用户看到文件转换的进度(类似于进度条,例如“52% 文件正在转换”)无论如何我可以向用户显示当前的进度文件转换(发生在后端)?在文件转换期间,我只能显示状态(以数字(由我正在使用的 API 提供))
我不知道从哪里开始有人可以提供一些见解或方法吗?
如果您使用的是 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 中轮询此操作。
你在说:During file conversion I am only able to show the status(in numbers(provided by the API I am using))
这个数字是多少?是转换多少文件的百分比?如果是,那么您只需要导入jQuery UI
库并添加.progressbar()
简单的解决方案:使用 Struts2-Jquery 标签
并使用 gif 图像在您的提交标签上定义指示器
例如。
`<form action="...">
<s:file ..../>
<sj:submit indicator="imgId">
</form>
<img id="imgId" src="images/indicator.gif" alt="Loading..."
style="display:none"/>
`