如何在rails中下载时为ftp文件提供不同的文件名

时间:2014-06-23 07:14:12

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

我有:

1)ftp上的文件名为(@ track.path.path),如" b573c8150fbc0dc6f5de6a9d4db79277_128.mp3"等

2)在数据库中,每个文件的名称都很好(@ track.fname),如" U2 _-_ Ill_go_crazy_if_i_dont_go_crazy_tonight.mp3"

问题: 有没有办法在下载时将DB命名为ftp文件?

music_controller.rb:

   def download
     @track = Mp3File.find(params[:id])
     case params[:bitrate]
       when "64"
         send_file(@track.path.path + "_128.mp3")
       when "128"
         send_file(@track.path.path + "_64.mp3")
       when "32"
         send_file(@track.path.path + "_32.mp3")
     end
   end

我希望用户有一个好名字" U2 _-_ Ill_go_crazy_if_i_dont_go_crazy_tonight.mp3"下载后在他的设备上

2 个答案:

答案 0 :(得分:1)

send_file采用:filename选项来完成此操作。

答案 1 :(得分:0)

无论网址如何,您都可以设置the Content-Disposition header来设置文件名:

def download
  @track = Mp3File.find(params[:id])
  headers['Content-Disposition'] = 'attachment; filename="#{@track.fname}"'

  # ...
end