throbber用于文件生成

时间:2011-01-18 00:41:28

标签: jquery asp.net-mvc internet-explorer iis-7

环境:IIS7 / IE / ASP.Net MVC / jQuery

场景:当用户点击网页中的提交按钮时,服务器将动态生成excel文件,然后将文件流发送回客户端浏览器,用户将看到文件打开/保存对话框。但页面保持不变。

为了在用户等待生成文件时添加一个throbber,我必须使用ajax来提交请求,否则没有办法(或者我没有找到任何)知道文件的时间生成完成,反过来隐藏了悸动者。

但是ajax无法接收文件流(或者可以吗?),所以我必须提交另一个请求来获取ajax回调中的实际文件,我可以先隐藏throbber。

但是,由于最终获取文件的请求是由代码自动完成的(不是用户点击),用户将看到阻止文件下载的黄色信息栏,这在IE中是一个非常愚蠢的功能,因为用户右键单击黄色栏并允许下载后,他们必须再次生成文件!

知道怎么做到这一点吗?

由于

1 个答案:

答案 0 :(得分:0)

这是一个建议:

  1. 触发ajax调用,该调用会创建包含excel文件的内存流。将excel文件的内存流放入缓存(短期到期)。让ajax调用返回“完成”字符串

  2. 在网页上,请你悸动(我猜你的意思是旋转等待动画?)做动画,直到它从ajax调用中获取“完成”字符串,然后触发另一个ajax调用抓取excel文件。由于excel文件已经在内存中,因此此调用应该更快,您不需要旋转动画图标。

  3. 请注意,在步骤1中,您应该保持到期时间短,否则许多生成文件的人可能会快速填满您的内存。你也可以写入磁盘,但是你需要一些可能变得棘手的清理方法。