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

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

-C

查看

send_file @file.path, :x_sendfile => true 

在apidock 。

这允许您使用rails身份validation从文件系统提供文件,但是提供实际文件将通过您的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 

如果您正好使用nginx,则x_sendfile不可用,如果您正在使用X-Accel-Redirect。 您可以在这里找到更多信息:

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