Как присвоить другое имя файла ftp при загрузке в rails

#ruby-on-rails #ruby #ruby-on-rails-3 #ruby-on-rails-3.2

#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»

Вопрос: Есть ли какой-либо способ присвоить имя из базы данных 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» на его устройстве после загрузки

Ответ №1:

send_file принимает :filename опцию, которая делает именно это.

Ответ №2:

Вы можете установить Content-Disposition заголовок для установки имени файла независимо от URL:

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

  # ...
end