Rails:使用不完整的文件名打开文件

时间:2013-11-08 14:46:32

标签: ruby-on-rails ruby ruby-on-rails-3 x-sendfile

我在rails上使用ruby,我想知道是否有办法让我打开一个文件,其中我缺少文件名的最后几个字符。

例如:我的文件名是“/folder/files/A2222_revA.pdf”。但是,随着时间的推移,这些文件名将从A2222_revA更改为A2222_revB到A2222_revC。我将路径和不变名称(A2222)保存为变量,我的目标是只打开名为A2222的任何文件...因为永远不会有多个具有该特定前缀的文件。

有没有办法在指定的文件夹中打开以字母数字顺序排列的下一个文件名?

我有一个控制器来查看这些文件:

  def view
    @drawing = Drawing.find(params[:id])
    @path = @drawing.draw_path(@drawing)

    send_file( @path,
    :disposition => 'inline',
    :type => 'application/pdf',
    :x_sendfile => true )
  end 

并且draw_path方法如下所示:

  def draw_path(drawing)
    folder = drawing[:file_location]
    file_name = drawing[:drawing_number]
    path = "X://engineering/shop\ prints/"+folder+"/"+file_name+".pdf"
    return path
  end

显然这种方法并不完整,我需要添加更多逻辑。

3 个答案:

答案 0 :(得分:4)

一种方法是获取与您的前缀匹配的文件列表,例如:

files = Dir.glob(File.join(path, "A2222_rev*"))

答案 1 :(得分:2)

因此,如果在任何给定时间点确实只有一个文件,您可以

path = Dir["/folder/files/A2222_*.pdf"].first

没有

答案 2 :(得分:0)

使用glob函数检索文件名,然后传递给File.open