Rails 3-公共文件夹中的MP3文件



我将mp3文件添加到/public文件夹中,发现了一些问题。

在我看来,我添加了链接:

= link_to "Interview 1", "/interview_01.mp3"

当我从页面上看到链接时,在我点击它之前,一切都看起来很正常。浏览器挂起一分钟或更长时间,互动程序变为"未定义",我的谷歌浏览器冻结。

它怎么了?我如何才能让人们下载文件?

编辑:自从有人投票否决我之后,我的答案有了更多的上下文

当你链接到mp3文件时,大多数现代浏览器都会尝试直接在浏览器中播放该文件。你的浏览器可能会冻结,因为你的浏览器用来开始播放文件的任何插件都坏了。我的猜测是,你正在运行windows,它正试图使用quicktime插件或类似的东西。

如果您不希望浏览器播放该文件,而实际上希望该文件开始下载,则需要在HTTP响应中添加一些额外的头。最重要的是:

Content-Disposition: attachment; filename="filenamehere.mp3"

我最初的回答提供了实现这一点的说明。如果这不是你希望实现的,那么你可以忽略它。

如果你想用新的HTML5音频标签将文件直接嵌入页面,你可以按照@Alen在问题评论中给出的建议。

原答覆:

您应该尝试使用#send_file控制器助手方法从控制器操作发送文件。

= link_to "Inteview 1", :controller => 'files', :action => 'send_file', :filename => 'interview_01.mp3'

然后

class FilesController
  def send_file
    file_path = "#{Rails.root}/public/#{params[:filename]}"
    send_file file_path, :filename => params[:filename], :disposition => 'attachment'
  end
end

参考轨道Api:http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_file

send_file方法正确设置HTTP标头,以告知浏览器下载文件,而不是尝试渲染文件。

相关内容

  • 没有找到相关文章

最新更新