3

ユーザーがファイルをアップロードしたりファイルをダウンロードしたりできる「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 をアセット パイプラインで適切に動作させる方法を知っている人はいますか?

ありがとう。

4

2 に答える 2

8

この問題を抱えている人のために、私はそれを解決しました。合格

'data-no-turbolink' => true 

link_to ヘルパーに挿入して、Turbolinks がダウンロードを混乱させないようにします。

https://github.com/rails/turbolinks/issues/182

于 2013-07-06T22:08:44.743 に答える