2010-08-29 5 views
3

Comme il faut un certain temps pour préparer le contenu des données à télécharger, je veux montrer un message « Préparation du fichier à télécharger » lorsque l'utilisateur soumet la demanderails Comment savoir quand send_file fait

Puis, quand le fichier est prêt, j'utilise send_file pour envoyer les données

une fois fini, je dois effacer le message

Merci beaucoup

+1

Je voudrais savoir comment faire aussi. Des idées quelqu'un? – digitalWestie

Répondre

5

Voici ce que je ferais.

1. Créez une action prepare_file

D'abord, je voudrais créer une action dont le travail serait juste pour créer le fichier et plutôt que de rendu HTML, il rendrait un objet JSON avec le nom du fichier cela a été créé.

2. Utilisez AJAX pour appeler l'action prepare_file

Sur le client, lorsque l'utilisateur clique pour télécharger le fichier, vous affichez le message, « Préparation de téléchargement ... » et juste faire une requête AJAX à cette action. La réponse que vous obtiendrez via AJAX est le nom du fichier créé.

3. Rediriger le fichier télécharger

Enfin, vous pouvez cacher la préparation message de téléchargement et rediriger le navigateur vers le téléchargement de fichiers via JavaScript avec le nom du fichier qui a été créé. Vous utiliseriez send_file dans cette action.

Je sais que, dans la question, vous vouliez aussi pouvoir afficher à l'utilisateur un message lors du téléchargement du fichier et un autre message lorsqu'il est terminé. Cependant, ceci n'est possible que si vous écrivez votre propre gestionnaire de téléchargement côté client. Le navigateur gère entièrement les téléchargements de fichiers et l'utilisateur verra dans le navigateur que le fichier est en train de télécharger et quelle sera la progression. Donc, je comprends d'où vous venez, mais vous ne devriez pas avoir l'impression que l'utilisateur n'est pas informé de ce qui se passe. Au moins avec cette solution, vous leur affichez un message lors de la préparation du fichier, puis une fois le message disparu, la boîte de dialogue du fichier de téléchargement s'affiche dans le navigateur.

Si vous avez besoin d'aide avec des exemples de code réels pour ce faire, faites le moi savoir.

Questions connexes