/ publicフォルダーにmp3ファイルを追加しましたが、少し問題がありました。
私の見解では、リンクを追加しました:
= link_to "Interview 1", "/interview_01.mp3"
ページからリンクを見ると、クリックするまですべてが正常に表示されます。ブラウザが1分以上オンになり、タイルが「未定義」に変わり、GoogleChromeがフリーズします。
どうしたの?どうすればファイルをダウンロードできるようにできますか?
/ publicフォルダーにmp3ファイルを追加しましたが、少し問題がありました。
私の見解では、リンクを追加しました:
= link_to "Interview 1", "/interview_01.mp3"
ページからリンクを見ると、クリックするまですべてが正常に表示されます。ブラウザが1分以上オンになり、タイルが「未定義」に変わり、GoogleChromeがフリーズします。
どうしたの?どうすればファイルをダウンロードできるようにできますか?
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 ヘッダーを正しく設定して、ファイルをレンダリングするのではなくダウンロードするようにブラウザに指示します。