通过rails应用程序公开服务中的文件

时间:2009-07-31 17:54:29

标签: ruby-on-rails file upload download

我有一个生成开放式office文件的rails应用程序,我在另一个位置有一个服务,可以将这些打开的office文件转换为microsoft office文件。我想要一个控制器操作,将打开的office文件发送到转换器,然后将返回的microsoft office文件提供给用户。我怎么能这样做?

-C

2 个答案:

答案 0 :(得分:3)

结帐

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

答案 1 :(得分:0)

如果您正好使用nginx,则

x_sendfile不可用,如果您正在使用X-Accel-Redirect。您可以在此处找到更多信息:

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