寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

ブラウザでCSVファイルをダウンロードしようとするとブラウザで開いてしまう (GCS編)

f:id:chidakiyo:20200424144928j:plain

ファイルのダウンロード機能など作成することがよくあると思いますが、
Chromeだとファイルとしてダウンロードができるのに、Safarだと何故かブラウザ上でダウンロードしたいファイルを展開してしまう。
そんな事ありますよね。

何が必要か

答えをいきなり書くと、 Content-Disposition ヘッダーが必要。
デフォルト値は inline (ブラウザでそのまま展開)になっているようです。(MDNによると)

以下のようなパラメータの設定パターンがあります

Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"

ファイルとしてダウンロードさせ、その際のファイル名を指定する場合には一番下のパラメータがヘッダーに含まれている必要があります。

GCSではどのように設定するのか

こちらの図のように、GCS内に格納されているオブジェクトのメタデータを選択し、 Content-Disposition に対し必要な項目を入力します。

f:id:chidakiyo:20200424144718p:plain

参考資料

https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Disposition

ではでは。