Вы можете использовать встроенные рельсы send_file или send_data.
Для воспроизведения файла (например, для файлов прокси конечной точки), используйте send_file:
send_file("#{RAILS_ROOT}/path/to/file/on/server",
:filename => "client-suggested-filename",
:type => "mime/type")
Для потоковой передачи сгенерированных данных (например, для сгенерированного PDF), использование send_data:
send_data(your_data,
:filename => "client-suggested-filename",
:type => "mime/type")
расширение файла и тип mime не должны совпадать, но они, вероятно, должны просто соответствовать ожиданиям конечных пользователей. Например, если вы отправляете с типом mime application/pdf
, вы действительно должны установить :filename
в something.pdf
.
Если вы не знаете, какой тип mime для отправляемого файла, вы можете проверить this wikipedia page или использовать жемчужину mime-types. (Или, если вы читаете из базы данных, в которой хранится тип mime, используйте это).
Возможный дубликат: http://stackoverflow.com/questions/1213957/exposing-files-from-a-service-through-a-rails-application – Baldrick