#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