問題

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" "{}"