Upload API

概要

Kollus HTTP アップロード Endpointは 顧客社がアップロードしたい時点にKollus Open APIの一回性アップロード URLを発給、
APIを呼び出して獲得したアップロードURLに HTTP multipart/form-data 形式でファイルをアップロードし、以降の過程(トランスコーディング)を進めさせます。

Use case scenario

      

  1. ユーザが顧客社のWeb siteに動画ファイルをアップロードするため、特定ページをリクエストします。
  2. 顧客社のアップロードページからユーザにアップロード経路をレスポンスするためKollus Apiを使ってアップロードURL生成をリクエストします。
  3. アップロードURL 生成リクエストをレスポンスするためアップロード URLとアップロード ファイルキー(Upload file key), キーの満了時間などの情報を獲得します。
  4. 3からレスポンスされたアップロードURL情報に基づいて顧客に見せるアップロード ページを生成します。
  5. 顧客社のアップロードページでアップロードをすると、実際アップロードは顧客社のWeb siteではなく、Kollusアップロードサーバーへ直接転送することになります。

注意事項

HTTP プロトコルを通したアップロードに対応するため、ユーザがアップロードするに必要な情報を生成するAPIを提供します。HTTP Upload APIは以下のような特徴があります。

  • 生成されたアップロードURL, アップロードファイルキーは一度使用されたら無効になります。
  • 生成されたアップロードファイルキーは指定した時間が経過すると自動で廃棄されます。

リクエスト規格

Upload endpointの生成

Query Parameters

  • access_token (API アクセストークン)

アップロードURLの発給をリクエストするに当たって、次のようなパラメタ-設定が可能となります。RequestはKollus APIポリシー上、HTTP(80), POSTのみ対応します。

POST keyData type基本値備考
expire_timeinteger600 (秒)値の範囲は0 < expire_time <= 21600 になります。空白または項目を削除した場合、基本600秒に設定されます。
category_keystring(無し)アップロードしたファイルが指定されるカテゴリのキーになります。空白または項目を削除した場合、「無し」に設定されます。
titlestring(無し)

入力したタイトルをコンテンツのタイトルとして強制に指定します。転送しないまたは空白の場合、ファイル名がタイトルとして設定されます。
is_passthroughを1に設定するとtitleは原本ファイル名に指定されます。

is_encryption_uploadinteger0 (非暗号化)0は非暗号化アップロード, 1は暗号化アップロードになります。暗号化アップロードした場合、ファイルが暗号化され、Kollus専用プレーヤーでしか再生できなくなります。暗号化アップロードが有効化されてないサービスアカウントにこの値を1に指定してリクエストした場合、アップロードURL生成に失敗します。
is_audio_uploadinteger0 (ビデオ)0はビデオファイル、1はオーディオファイルアップロードになります。
is_multipart_uploadinteger0 (非暗号化)ファイルの分割アップロードを設定する項目になります。今後提供する予定で現在は動作しません。
is_passthroughinteger0 (normal)1=passthrough, 0=normal
profile_keystring(無し)is_passthrough=1になっている条件で使用 (profile_key={アカウント名}-pc-high)
設定->詳細設定->エンコーディングプロファイル

レスポンス規格

JSON / UTF-8で結果をリターンします。

(# upload_urlに使用されるドメイン情報を含めた全ての情報はKollusシステムポリシーにより変更される可能性があります。)

Sample
{
    "error": 0,
    "message": "",
    "result": {
        "upload_url": "http: //upload.jp.kollus.com/api/v1/UploadMultiParts/KUS_BOHG2eTQhPSIaG2511G1jfkpWOYAOjDc/20151204-dh6o2goz",
        “progress_url”: “http: //upload.jp.kollus.com/api/v1/GetUploadingProgress/KUS_BOHG2eTQhPSIaG2511G1jfkpWOYAOjDc”,
        "upload_file_key": "20141017-y4sae7td",
        "will_be_expired_at": 1413883670
    }
}
        

JSON Structure Description

  • error : エラーコード 正常の場合 0
  • message : エラーの場合、詳細内容が含まれます。
  • result : 正常の場合アップロードAPI呼出の結果が含まれます。
    • upload_url : アップロードするURL (HTTP)
    • progress_url : アップロード進行率の獲得ができるURL (HTTP)
    • upload_file_key : アップロードファイルキー
    • will_be_expired_at : upload_file_key 有効期限(unix timestamp)

ファイルアップロード

アップロードURL発行リクエストAPIから獲得したアップロードURL(upload_url)が、実際にファイルを転送するアップロードサーバーのアドレスになります。このアドレスにHTML multipart/form-dataの形式でファイルを転送します。

注意事項

  • 転送するファイルのinput nameはupload-fileになります。
  • 各アップロードURLは各1つのファイルのみ適用されます。(1つのアップロード URLで複数のファイルを転送する場合、1回目以降のアップロードは失敗します。)
  • アップロードはアップロードURLの有効期限内に完了しなければなりません。有効期限の判定はアップロードが終了した時点になります。

アップロードオプション

POST keyData type基本値備考
return_urlstring(無し)return_urlが設定された場合アップロード終了後に指定のurlへredirectします。ここにresultとmessage値を追加します。(*Header Protocol required )
入力値: http://www.abc.com
例> http://www.abc.com?result=S&message=...
disable_alertinteger0基本仕様としてアップロード終了後に結果をalertで転送することになっていますが、結果転送機能を使わない場合disable_alert値を1にして転送してください。
redirection_scopestring‘outer’

アップロード完了後redirectするdomain scopeを指定します。このオプションは次の値の中、1つを持ちます。

  • outer -> window.top.locationでredirectする
  • inner -> window.locationでredirectする
  • no -> redirectしない
acceptstringRequest Header の中のAcceptの値アップロード完了後、転送してもらう結果のコンテンツタイプを指定します。ブランクにするとtext/html方式で送ります。この場合return_url, disable_alert, redirection_scopeオプションを適用して生成されたhtml ページが結果としてreturnされます。この値を ‘application/json’ 形式に指定すると、上記の3つのオプションは無視され、結果はJSON形式でReturnされます。

RETURN URL

  • resultはSかFで判定されます。Sはアップロード成功、Fはアップロード失敗です。
  • messageはアップロード結果を説明するメッセージとなります。 (alertに表示されるメッセージと同一です。)

Sample

<form action="http: //upload.jp.kollus.com/20141017-y4sae7td" method="post" enctype="multipart/form-data">
     <!-- redirect scope 設定 -->
     <input type=”hidden” name=”redirection_scope” value=”outer” />

     <!-- アップロード終了後 redirectする url 設定 -->
     <input type=”hidden” name=”return_url” value=”http://www.lotte.com/upload_result.html” />

     <!-- アップロード終了後 alertを表示しないように設定 (1) -->
     <input type=”hidden” name=”disable_alert” value=”1” />

     <input type=”file” name=”upload-file” />
     <input type=”submit” />
</form>


アップロード進行率

アップロードURL生成APIの呼出で獲得した結果からprogress_urlエントリーを参照してアップロード進行率を獲得します。(JSON形式)

レスポンス規格

JSON / UTF-8で結果をレスポンスします。

Sample

{
    "error": 0,
    "message": "",
    "result": {
        "upload_url": "http: //upload.jp.kollus.com/api/v1/UploadMultiParts/KUS_BOHG2eTQhPSIaG2511G1jfkpWOYAOjDc/20151204-dh6o2goz",
        “progress_url”: “http: //upload.jp.kollus.com/api/v1/GetUploadingProgress/KUS_BOHG2eTQhPSIaG2511G1jfkpWOYAOjDc”,
        "upload_file_key": "20141017-y4sae7td",
        "will_be_expired_at": 1413883670
    }
}

JSON STRUCTURE DESCRIPTION

  • error : エラーコード 正常の場合 0
  • message : エラーの場合、詳細内容が含まれます。
  • result : 正常の場合アップロードAPI呼出の結果が含まれます。
    • upload_url : アップロードするURL (HTTP)
    • progress_url : アップロード進行率の獲得ができるURL (HTTP)
    • upload_file_key : アップロードファイルキー
    • will_be_expired_at : upload_file_key 有効期限(unix timestamp)

エラーケース


StatusResultCauseSolution
400"error": "1", "message:": "failed to create upload session. invalid request"accessToken の値が空いているaccessTokenに query parameterを入れてリクエスト
400"error": "1", "message:": "The Audio profile key does not exist."accessToken 登録不可または正常ではない値accessTokenが正しく登録されているかを確認
400"error": "1", "message:": "The profile key does not exist."passthroughで該当 profile_keyが正常にレスポンスされらい

profile_keyを bodyに入れてリクエストしているかを確認

400"error": "1", "message:": "The profile key does not match."passthroughで該当 profile_keyが正常ではない値該当 profile_keyが正しいかを確認
500{
    "error": true,
    "message": "expired time",
    "result": {
        "type": "f",
        "upload_key": "null",
    "progress": 0
    }
}
expire 時間が 0 または最大値を超過expire 時間設定を 1以上 21600以下に設定
500{
    "error": true,
    "message": "bad parameters",
    "result": {
        "type": "p",
        "upload_key": "null",
        "progress": 0
    }
}
upload Typeの値が正常ではない

uploadTypeを n または f で必要な値に指定する


200<script>alert('Failed to upload.')</script>upload 失敗uploadUriが正しいか確認してからファイルをアップロードする、form-dataの filedが upload-fileで正しく作成しているかを確認

サンプルコード

Upload API – ruby

Upload API – jquery

Upload API – php

Upload API – java

Copyright © CATENOID, lnc. All Rights Reserved.
E-mail. jp_sales@catenoid.net | Tel. 03-4405-8462