2015年7月5日日曜日

新ConoHaのオブジェクトストレージにAjaxを使ってアップロードする


前回(新ConoHaのオブジェクトストレージ上のデータをAjaxで取得してみる)の続き。

次はAjaxによるアップロードを試します。

参考サイト

コンテナの準備

アップロード先となるコンテナの準備をする。といっても前回の記事から何も変更なかった。
アップロード先のコンテナ
必要なのはX-Container-Meta-Access-Control-Allow-Originメタデータだけみたい。

サイトの準備

参考サイト4つ目のGitHubのソースを真似てWebページを作った。(http://localhost:3000/ のホストとしてアクセス)
https://github.com/naichilab/cors-swift-example/blob/master/app.js
アップロード処理が書かれてるjsファイル。
URL組み立ててtokenつけてPUTするだけっぽい。

トークンの発行

参考サイト3つ目のConoHaドキュメントを見てみると、トークン発行方法が書かれてる。
ターミナルで下記コマンドを実行してトークンを取得する。
curl -i -X POST \
-H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"APIユーザー名","password":"APIユーザーパスワード"},"tenantId":"テナントID"}}' \
https://identity.tyo1.conoha.io/v2.0/tokens
長々としたJSONが返ってくるのでaccess->token->idをメモる。
どうもトークンは一度発行すると24時間有効みたいですね。

アップロード実行

さきほど立ち上げたサイトのフォームに入力していく。

  • StorageURL:ConoHaコントロールパネル->API->Object Storage Serviceエンドポイント
  • StorageToken:さきほどメモしたトークン
  • Container:コンテナ名
こんな感じ

File Selectionのボタンからファイルを選ぶとアップロードが始まる。
アップロード完了


すんなりとアップロードできた。
CyberDuckで確認した。

まとめ

  • ConoHaのAPIユーザーを使ってトークンを発行する。
  • コンテナにX-Auth-Tokenメタデータの設定は不要
あってんのかなこれ・・・


だいぶやりたいことに近づいてきたような気がする。
自分のサーバーでトークンを発行してブラウザに渡す→ブラウザが直接オブジェクトストレージにアップロードって感じでいいのかな。
トークンが24時間有効だしこのままじゃ好きなファイルアップロードできちゃうからもーちょい厳しい認証が必要だよなぁ。
どうしたらいいんかな。

関連記事

ConoHa関連の記事をまとめました。
ConoHa関連まとめ

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...