ホーム DoRuby Fog を利用した IDCF オブジェクトストレージ へのアップロード・ダウンロード
Fog を利用した IDCF オブジェクトストレージ へのアップロード・ダウンロード
 

Fog を利用した IDCF オブジェクトストレージ へのアップロード・ダウンロード

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Railsで画像アップロード等を行うにはCarrierWaveを使用するのが便利であるが、これは特定のモデルに紐づくファイルをアップロードする事が基本的な使用方法である。 それに対して、ただ単純に(特定のモデルに紐付かない)ファイルをIDCFオブジェクトストレージへアップロードしたりIDCFオブジェクトストレージからダウンロードしたりするという用途においては、 Gem「fog」を利用すれば簡単に実装できるようになる。

Gemfile

gem 'fog'

アップロード方法

file_uploader = Fog::Storage.new(
  provider:               'AWS', # IDCFでもAWSと記述
  path_style:             true,
  host:                   'ds.jp-east.idcfcloud.com',
  port:                   443,
  scheme:                 'https',
  aws_access_key_id:      'XXX', # アクセスキー
  aws_secret_access_key:  ENV['SECRET_IDCF_SECRET_KEY'],
  region:                 'ap-northeast-1', # 東京
  aws_signature_version:  2
)

file_uploader.put_object(
  'XXX', # バケット名
  '/tmp/xxx/xxx.xxx', # ファイルのフルパス
 'XXX' # ファイル内容(パラメータで受け取る場合は、そのままparams[:xxx]等)
)

ダウンロード方法

file_uploader = ... # アップロード方法と同内容なので省略

File.open(file_full_path, 'w') do |f|
  f.write file_uploader.get_object(
    'XXX', # バケット名
    '/tmp/xxx/xxx.xxx' # ファイルのフルパス
  ).data[:body]
end
記事を共有

最近人気な記事