0

Rails2 Webappで、ファイルのダウンロード要求を偽造するためのフォームをjavascriptで作成しています。コントローラでは、send_fileを使用して応答をレンダリングし、ファイルがダウンロードされるようにします。

ダウンロードするファイルの検索にはかなり長いプロセスがあり、その間、クライアントはファイルのダウンロードが開始されるのを待っています。このため、クライアントがダウンロードボタンをクリックするとすぐに、「ファイルをリクエストしています...」という小さなマッサージが表示されます。

問題:応答がレンダリングされたとき(ファイルのダウンロードが開始されたとき)を(javascript側で)知ることができるので、表示しているメッセージを非表示にできますか?私はどこでもajaxを使用しており、showMessageメソッドを呼び出しの「before」部分にスローし、hideMessageをjqueryajax呼び出しの「complete」部分にスローします。しかし、ajax呼び出しでファイルのダウンロードを要求できないため、フォームを介してファイルをダウンロードする必要がありますが、応答を取り戻す(またはファイルのダウンロードを開始する)ときにどうすればよいかわかりません。

4

1 に答える 1

0

基本的な考え方は、ファイルと共に Cookie を送信することです。一部の JavaScript コードは定期的に Cookie をチェックします。JavaScript が Cookie を取得すると、ダウンロードが開始されます。

サンプルの JavaScript コードは、こちら( Java のサーバー コード) とこちら(ASP.NET のサーバー コード) にあります。

Rails では、Cookie は次のように送信できます。

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