杏z学習帳

Swift、Unityなどを中心に節操なく手を出してますまる

friebase-adminを使ってアップロードする時にMIME(ContentType)を設定する方法(2019/06/21)

[Firebase]friebase-adminを使ってアップロードする時にMIME(ContentType)を設定する方法

ざっくりまとめ。

です。

環境

問題

firebase-admin を使って Firebase Storage に画像ファイルをアップロードしてみたのですが、
アップロード自体は問題なくできたものの、アップされたファイルをみてみると、タイプが application/octet-stream となってしまう。
これだと表示するではなく勝手にDLされてしまうという挙動になってしまったりといろいろ不都合なので然るべきタイプにしたい。
ちなみにコードはこんな感じです。

admin.storage().bucket().upload("Storage上のパス", {
  destination:  "ローカルのファイルパス",
})

対応

アップした時に判定されて自動的に適切なものが設定されるということではないみたいなので、
こちらで適切に指定する必要があります。

admin.storage().bucket().upload("Storage上のパス", {
  destination:  "ローカルのファイルパス",
  metadata: {
    contentType: "image/png"
  }
})

こういう感じです。
実際は固定文字列ではなくて、ファイルから読み取って判定する必要があるかと思いますが(笑)

他にも metadata をつかうと cacheControl なんかも設定できたりするので見ておくとよさそうです。

参考