Динамическое создание файла и загрузка на компьютер пользователя

Мне интересно, можно ли это сделать в Rails:

Наличие ссылки на веб-странице. Когда пользователь щелкает ссылку, контроллер динамически генерирует файл (скажем, текстовый файл, содержащий одно случайное число от 1 до 10), и этот файл загружается на компьютер пользователя. Файл может временно храниться на сервере, но он не должен находиться там постоянно.


person John    schedule 01.11.2012    source источник


Ответы (2)


Используйте send_data в контроллере:

send_data("4", :filename => "my_awesome_file")

Если у вас уже есть файл на сервере, вы можете использовать вместо него send_file

send_file(filepath, :filename => "my_awesome_file")

http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data

person Community    schedule 01.11.2012

Да, это возможно. Это то, что у меня есть в одном из моих приложений:

class DownloadsController < ApplicationController

  def download
    # ...
    send_file CSVConstructor::Constructor.new(...).to_zip 
  end

end

Действие download принимает параметры, отправленные из формы, и отправляет их в пользовательский класс, который генерирует несколько файлов, упаковывает их в zip-архив и возвращает путь к файлу. Вам придется найти лучший способ создания файлов для вашего собственного приложения, но я бы порекомендовал что-то подобное — разветвление функциональности в отдельный класс помогает сохранить ваш контроллер легким.

person Zach Kemp    schedule 01.11.2012