0

こんにちは簡単な質問で私を助けてください:

簡単なダウンロードをリリースする方法:

i my public/data 私は some.txt または some.pdf ファイルを持っています (いくつかのテキストを含む)

そして、ユーザーがいくつかのボタンをクリックして、このファイルのダウンロードを開始したいと考えています。

私はそのようなことをします

<%= link_to "Terms" ,:action => :download, :file_name => 'some.txt' %>

def download
    send_file "#{RAILS_ROOT}/public/data/#{params[:file_name]}", :type=>"application/zip"
end 

しかし、次に何をすべきか?

PS このテーマに関するチュートリアルや例 (ファイルのダウンロードなど) があれば、とても感謝しています。

ここに画像の説明を入力

4

2 に答える 2

1

あなたは間違いなくあなたの中にルートがありませんroutes.rb:

resources :posts do
  get :download, :on => :collection

  resource :comments
end

次に、次のようなリンクを作成できます。

<%= link_to "Terms" ,:action => :download, :file_name => 'some.txt' %>

おそらく次のようなものが生成されます。

<a href="/posts/download?file_name=some.txt">Terms</a>

それはまだ最善の解決策ではないと思いますが、問題は解決します。

これを明確にするために、Rails ガイドのこの部分をざっと見ることをお勧めします: http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

このガイドを完全に読むことは常に良いことであり、強くお勧めします。

于 2012-09-19T14:15:13.580 に答える
0

「次は何」とはどういう意味ですか?application / zip mimeタイプがファイル(.txtであるため、おそらくテキスト/プレーン)と一致しないという事実を除けば、あなたが書いたものは本質的に正しいものです。

ファイルはパブリックディレクトリにあるため、コントローラを介して厳密に使用する必要はないsend_fileため、代わりに次のように記述できます。

<%= link_to "Terms", '/data/some.txt' %>

次に、より大きなファイルをサーバー化するために使用する場合はsend_file、代わりにxsendfileを調べて、パフォーマンスを向上させることができます。ただし、これはWebサーバーでサポートされている必要があります(たとえば、Apacheにmod_sendfileを使用します)。

しかし、それはあなたのコードがそのまま動作するはずだと言ったすべてです。

于 2012-09-18T21:48:30.967 に答える