2017-08-09 1 views
0

私はshrineを使用してExcelファイルをアップロードしています。 shrineを使用して、ファイルは正常にアップロードされ、モデルインスタンスにリンクされます。Rails5:ブラウザでexcelファイルを開く

ダウンロードする代わりに、Excelファイル(.xls、.xlsx)をブラウザで開きたいとしました。私は様々な解決策を探して、それらを試しましたが、運はありません。人々のほとんどから

推奨される解決策は、「SEND_DATA」を使用しており、私もそれで試してみました:

send_file(data, type: 'application/vnd.ms-excel', filename: "#{uploaded_file.metadata["filename"]}", disposition: 'inline') 

をしかし、それはファイルをダウンロードする代わりに、ブラウザで直接開いています。

私の質問は

1ですが)、このオープニング/ダウンロードファイルには、ブラウザの設定に依存しますか?

2)どれが良いですか?ブラウザでファイルを開くには、または 'axlsx'のようなgemを使用して、アプリケーションでテンプレートを作成してレンダリングしますか?

ありがとうございます!

答えて

0

ブラウザがブラウザでファイルを開くかダウンロードするかは、Content-Dispositionレスポンスヘッダーによって決まります。あなたはまた、ユーザーがそれをダウンロードすることを選択する必要があり、両方のケースでは、ファイル名を指定することができ

Content-Disposition: inline  # browser will attempt to display it 
Content-Disposition: attachment # browser will always download it 

Content-Disposition: inline; filename="table.xls" 
Content-Disposition: attachment; filename="table.xls" 

Content-Dispositioninlineに指定されていることを確認する方法は、あなたがあなたを保存している場所によって異なりますファイル。あなたがファイルシステムにそれらを格納しているなら、私はRails::Staticミドルウェアはすでに "インライン"の動作をしていると思います。そうでない場合はdownload_endpointに切り替えることができます。

あなたがAmazon S3の上でそれらを保存している場合、あなたはShrine::Storage::S3初期設定でデフォルト:content_dispositionアップロードオプションを指定することができます。

Shrine::Storage::S3.new(upload_options: {content_disposition: "inline"}, **options) 
関連する問題