0

在 Rails2 Webapp 中,我正在用 javascript 创建一个表单来伪造下载文件的请求。在控制器中,我使用 send_file 呈现响应,以便下载文件。

查找要下载的文件有一个相当长的过程,同时我让客户端等待文件开始下载。出于这个原因,只要客户端单击下载按钮,我就会显示一条小消息,上面写着“正在请求文件...”。

问题:我如何(在 javascript 端)知道响应何时呈现(也就是文件开始下载),以便我可以隐藏我正在显示的消息?我在任何地方都使用 ajax,我在调用的“之前”部分中抛出 showMessage 方法,在 jquery ajax 调用的“完整”部分中抛出 hideMessage。但是由于我无法请求使用 ajax 调用下载文件,所以我必须通过表单来完成,但是我不知道如何在收到回复时实现(或文件开始下载)

4

1 回答 1

0

基本思想是随文件一起发送 cookie。一些 javascript 代码会定期检查 cookie。当 javascript 获取 cookie 时,您就知道下载开始了。

您可以在此处(Java 中的服务器代码)和此处(ASP.NET 中的服务器代码)找到示例 javascript 代码。

在 Rails 中,cookie 可以这样发送:

cookies['download_token'] = params[:download_token]
send_data ...
于 2012-12-22T09:36:36.013 回答