рельсы, как узнать, когда send_file сделано - PullRequest
3 голосов
/ 29 августа 2010

Поскольку для подготовки содержимого загружаемых данных требуется некоторое время, я хочу показать сообщение «Подготовка файла к загрузке», когда пользователь отправляет запрос

Затем, когда файл готов,Я использую send_file для отправки данных

Как только это будет сделано, мне нужно очистить сообщение

Большое спасибо

1 Ответ

5 голосов
/ 20 декабря 2010

Вот что я бы сделал.

1.Создание действия prepare_file

Во-первых, я бы создал действие, задачей которого было бы просто создать файл, и вместо рендеринга HTML он отображал бы объект JSON с именем созданного файла..

2.Используйте AJAX для вызова действия prepare_file

На клиенте, когда пользователь нажимает кнопку для загрузки файла, вы отображаете сообщение «Подготовка к загрузке ...» и просто делаете запрос AJAX для этого действия.,Ответ, который вы получите через AJAX - это имя созданного файла.

3.Перенаправление на загрузку файла

Наконец, вы можете скрыть готовящееся сообщение о загрузке и перенаправить браузер на загрузку файла через JavaScript с именем созданного файла.В этом действии вы использовали бы send_file.

Я знаю, что в этом вопросе вы также хотели иметь возможность отображать пользователю сообщение при загрузке файла и другое сообщение, когда он закончен.Однако это невозможно, если вы не напишите свой собственный менеджер загрузок на стороне клиента.Браузер полностью обрабатывает загрузку файлов, и пользователь увидит в браузере, что файл загружается и каков прогресс.Итак, я понимаю, откуда вы, но вы не должны чувствовать, что пользователь не проинформирован о том, что происходит.

По крайней мере, с этим решением вы отображаете сообщение, когдафайл готовится, а затем, как только это сообщение исчезнет, ​​они получат диалоговое окно загрузки файла из браузера.

Если вам нужна помощь с реальными примерами кода, как это сделать, дайте мне знать.

...