Edited at

AzureのBlob serviceでファイルの別名ダウンロード設定

More than 1 year has passed since last update.


実現したいこと

AzureのBlob serviceに保存されているファイルに対して,ダウンロードの際に付けられるファイル名を別途指定したい


前提


  • AzureのBlob serviceには既にWebインターフェイスまたはAPIからファイルがアップロードされている(file1234という名前とする)

  • このファイルをダウンロードすると manual.pdf という名前で保存されるようにする

  • 2018年5月現在,APIを利用せずにWebインターフェイスによる操作でこれを実現することはできない


ソースコード

#!/usr/bin/env ruby

require "azure"

Azure.config.storage_account_name = "myaccountname"
Azure.config.storage_access_key = "Rfof7hZYw7oj.......uKbI1nPGoUkc0yFvA=="

Azure::Blob::BlobService.new.set_blob_properties(
"mycontainer",
"file1234",
{ blob_content_disposition: "attachment; filename=manual.pdf" }
)

【2018.02.02 スペルミス修正済】attachement -> attachment

なぜか割と普通に動いていました.(・_・;)


解説


  • require "azure"

    Microsoftの提供するAzure関係のライブラリ.Rubyの標準ライブラリではないので,sudo gem install azure で入れるか,ちゃんとやるならGemfileに書いてbundle installするかしておく

  • Azure.config....の2行

    Azureに接続するための情報.最初の myaccountname はAzureでBlob serviceを作成したときに付けた名前で,次の行はアクセスキー(秘匿すべき情報).Storage accountのAccess keysメニューから取得できる

  • Azure::Blob::BlobService.new.set_blob_properties

    対象となるコンテナ"mycontainer"の"file1234"という名前のブロブのプロパティを設定する.ここで指定した情報がHTTPヘッダのContent-Dispositionフィールドとなる.


検証環境 (2018.05.08)

ライブラリ等
バージョン

Ruby
2.3.1

azure (ruby gem)
0.7.10