предоставление файлов из службы через приложение rails

У меня есть приложение rails, которое генерирует открытые офисные файлы, и у меня есть служба в другом месте, которая преобразует эти открытые офисные файлы в файлы Microsoft Office. Я хотел бы иметь действие контроллера, которое отправит файл открытого офиса в преобразователь, а затем предоставит пользователю возвращенный файл Microsoft Office. как я мог это сделать?

-C


person Chris Drappier    schedule 31.07.2009    source источник


Ответы (2)


Проверить

send_file @file.path, :x_sendfile => true

в apidock.

Это позволяет вам обслуживать файлы из файловой системы с аутентификацией rails, но обслуживание фактического файла будет проходить через ваш модуль apache/lighttd и не будет связывать процесс rails.

Что касается возврата документа MS Office, вы, вероятно, захотите, чтобы служба вызывала другое действие, которое сообщает вашему приложению rails загрузить новый документ.

class MyController < ApplicationController
  def get_new_document
    unless params[:file_path].nil? or params[:server_uri].nil?
      @new_document = Net::Http.get(params[:server_uri], params[:file_path])
      @new_document.save # save to filesystem
    end
  end
end
person erik    schedule 31.07.2009
comment
Здесь стоит упомянуть send_data, так как это было то, что мне было нужно. Иногда у вас могут быть необработанные данные, и в этом случае send_file потребуется создать временный файл. - person Chris Pfohl; 22.07.2016

x_sendfile недоступен, если вы используете nginx, если вы используете X-Accel-Redirect. Дополнительную информацию можно найти здесь:

http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/
person jonnii    schedule 31.07.2009