問題
GoogleCloudStorageでアップロードしたpdfのリンクをクリックするとPDF viewerが開かずにダウンロードされる。
原因
ファイルアップロード時に、Content-Type
を明示的に指定しないと、Content-Type
が勝手にapplication/octet-stream
となってしまい、ファイルの種類が分からないが故に、ダウンロードしてしまうようです。
Google Cloud Storageで「種類」をしていすることでPDF Viewerで開くことができます。
解決策
プログラムで明示的にContentTypeを指定します。
GCSから設定する場合
オブジェクトの詳細から、「メタデータを編集」をクリックします。その際に開くモーダルウインドウでContent-Typeを指定します。
C#の例
storage.UploadObject(bucketName, objectName, contentType, FileSource);
コマンド
すでにアップロードしているファイルは、以下のコマンドで一括変更が可能
gsutil ls "gs://my-bucket-name/folder-name/" \
| grep "\.pdf" \
| xargs -I {} gsutil setmeta -h "Content-Type: application/pdf" "{}"