使用Rails 3列出远程目录中的文件?

时间:2012-08-06 11:01:34

标签: ruby-on-rails-3 file controller remote-server

我的网络上有一个samba服务器,其中包含许多目录,其中一个目录中包含.xls Microsoft Excel文档。

我想要实现的基本上是远程目录中的文件列表,然后我可以将其混合到包含远程IP的链接中。最终结果基本上是目录中文件的实时表,用户可以单击该表来打开他们需要的文件。

我已经阅读了以下类似的方法:

basedir = '.'
files = Dir.glob("*.xls")

我想要解决的问题是,如何使基础知识成为远程IP,以及如何将其构建到我的模型/控制器中。

理想情况下,我想做这样的事情:

file_controller.rb

class FilesController < ApplicationController

 basedir = '192.168.1.1/files/path/to/xlsdocuments/'

 def index
 @xls_files = Dir.glob("*.xls")

 respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @articles }
 end
end

这将允许我在我的视图中循环遍历@xls_files。

这甚至是远程可能吗?

更新

在我的控制器中使用上面的代码如下,我没有得到任何错误,但我无法弄清楚如何显示文件名:

class DocumentsController < ApplicationController
before_filter :authorize, only: [:new, :edit, :update]
basedir = '192.168.1.1/common/'
  # GET /documents
  # GET /documents.json
  def index
    @documents = Document.all
    @xls_files = Dir.glob("*.xls")
    @xls_files = @xls_files.split('\n')

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @documents }
    end
  end

我在视图中使用以下内容循环遍历文件名:

<% @xls_files.each do |xls| %>
 file name
<% end %>

这会输出file name。知道如何输出实际文件名吗?

2 个答案:

答案 0 :(得分:2)

对于其他可能想要这样做的人来说,这些是我为使其发挥作用而采取的步骤:

  1. 在本地安装远程文件夹。

    fusermount -u ~/yourmountdirectory

  2. 列出本地(远程)目录的内容

    @xls_files = Dir.glob("/home/danny/nurserotas/*")

  3. 3.视图中的输出列表

    <ul>
    <% @xls_files.each do |xls| %>
    <li><%= xls %></li>
    <% end %>
    </ul>
    

答案 1 :(得分:0)

您是否尝试使用如下命令行:

@xls_files = `ssh 192.168.1.1 'ls /path/to/dir *.xls'`
@xls_files = @xls_files.split('\n')