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