在javascript中等待文件下载时进度/忙碌指示器?

aud*_*ras 14 html javascript

情况如下:在Web应用程序中,用户选择一些选项,提交表单,PDF文件在服务器端动态生成并提供下载.

问题:生成PDF文件需要很长时间(最多1分钟).一些用户认为没有什么是hapening并且不断地再次点击提交按钮并再次增加服务器负载并进一步降低速度.

我想添加一些繁忙的指示器,它会显示动画图片和消息,如"请等待,你的文件正在生成",这似乎很容易做到.

但是:当文件准备好并弹出"文件下载"对话框时,如何隐藏此指示器?否则,即使用户下载了文件,该消息仍会保留在屏幕上!

似乎非常基本的要求,但我完全卡住了.谢谢你的任何建议!

Oli*_*Oli 5

对于需要花费更长时间(转换视频格式)的内容,我必须这样做.这看起来有点矫枉过正,但确实有效.

  1. 将PDF代码移出进程.
  2. 作业启动时,创建一个唯一的作业ID并将其保存到会话中.告诉PDF创建者这个ID.
  3. 让它将状态文件(命名为作业ID)写入服务器,使其写入"0%完成"并每隔几秒更新一次(这部分取决于您在流程中能够获得进度指标...如果没有那么这将不起作用)
  4. 使用JS拉下该文件.您可以向用户显示进度.
  5. 当进度等于"100%完成"时,将它们推送到PDF的位置.如果您将其命名为作业ID,可能会有所帮助.*

*我们有另一个下载脚本,使用content-disposition标题将其重命名为一个好名字(基于原始视频文件名),但这真的取决于你!

编辑:我应该添加等待页面是单击提交的结果.这是一个新的页面加载,但没有理由你不能在整个过程中使用AJAX,只要确保像其他人所说的那样,在第一次点击时禁用提交按钮以阻止用户进行猿猴操作.