ユーザーがファイルをアップロードしたりファイルをダウンロードしたりできる「uploads」という名前のアプリ ディレクトリにフォルダーがあります。ダウンロードの承認を制御したいので、uploads フォルダーを public ディレクトリに入れたくありません。
私のコントローラーには、次のものがあります。
send_file Rails.root.join('app', 'uploads', filename), :type => 'application/zip', :disposition => 'inline', :x_sendfile=>true
これは実際にはうまく機能します。問題は、実稼働サーバーで rake assets:precompile を実行し、assets ディレクトリを作成すると、ファイルが 2 回ダウンロードされることです。ファイルを初めてダウンロードするとき、ブラウザは何もしていないかのように動作しますが (読み込みが回転していない)、Google Chrome Web 開発者の [ネットワーク] タブでデータが転送されているのがわかります。ファイルがダウンロードされると、ユーザーにファイルをダウンロードするかどうかを尋ねるプロンプトが表示されます。
public ディレクトリの assets フォルダーを削除すると、この問題は解消されますが、アセット パイプラインを使用したいと考えています。また、アセット パイプラインの要件を require_tree から require_directory に変更してみました。
send_file をアセット パイプラインで適切に動作させる方法を知っている人はいますか?
ありがとう。