0

我在服务器上生成一个大的 csv 文件并在 mvc4 中返回它,这大约需要 30 秒。我想向用户显示加载消息,但由于我无法使用 ajax 下载文件,我不知道我应该做什么。另外,如果无法生成文件,即没有相关数据可用于生成文件,我希望能够返回出现在同一页面中的消息,我不想刷新页面或返回错误代码。这可能吗?

4

2 回答 2

1

我不会直接使用FileContentResult最终浏览器,而是返回一个标准视图,告诉用户正在生成文件。然后向服务器触发 AJAX POST 以触发文件生成,并将结果保存到服务器。服务器生成文件后,通知用户它可以下载,或者让浏览器导航到文件下载。

于 2013-04-25T19:35:05.913 回答
0

当操作尝试返回响应时,您无法生成加载消息,因为此时浏览器没有活动视图。处理此问题的最佳方法是使用 AJAX 创建作业(即调用将在单独的线程或进程中开始创建 CSV 文件并返回某种标识符的 URL。)然后,您可以每隔一段时间轮询一次获取当前状态或使用 SignalR 和 HTML5 Web Sockets 之类的东西来通知用户状态。文件创建完成后,为用户提供完成文件的链接。

于 2013-04-25T19:37:49.580 回答