16

ファイルのアップロード/ダウンロードが必要なRubyonRailsアプリケーションを開発しています。アップロードの部分では、非常に使いやすく柔軟性があるため、gemcarrierwaveを使用しました。問題は、ファイルをアップロードしたら、いくつかのことを知る必要があることです。つまり、ファイルをダウンロードする代わりにPDFの場合は、インラインで表示します。画像についても同じことが言えます。ファイル拡張子を取得するにはどうすればよいですか?また、ファイルをユーザーに送信するにはどうすればよいですか?フィードバックをいただければ幸いです。ありがとうございます!!

4

2 に答える 2

39

ファイル拡張子を決定します(マウントされたアップローダーの名前は「file」だと思います):

file = my_model.file.url
extension = my_model.file.file.extension.downcase

次に、mimeとdispositionvarsを準備します。

disposition = 'attachment'
mime = MIME::Types.type_for(file).first.content_type

if %w{jpg png jpg gif bmp}.include?(extension) or extension == "pdf"
  disposition = 'inline'
end

(必要に応じて他の拡張機能を追加します)。

そして、ファイルを送信します。

send_file file, :type => mime, :disposition => disposition
于 2012-07-25T08:32:59.120 に答える
5

ファイルをアップロードすると、名前がデータベースに保存されます。これには拡張機能も含まれます。アップローダーがマウントされたUserモデルがあるとすると、次のassetように取得できます。

user.asset.file.extension

ユーザーへの送信に関しては、を呼び出すとuser.asset_url、ファイルがアップロードされたURLが表示されます。ユーザーはそのリンクを使用してファイルを取得できます。それとも、「ファイルをユーザーに送信する」とはどういう意味か誤解していますか?

于 2012-07-25T08:30:23.980 に答える