このトピックでは、アップロードSDK for JavaScriptを統合し、SDKを使用してクライアントからApsaraVideo VODにローカルまたはオンラインファイルをアップロードする方法について説明します。
前提条件
指定されたリージョンのストレージパスやコールバック設定など、アップロードに必要なシステム設定が構成されます。 詳細については、「ストレージバケットの管理」および「コールバックの設定」をご参照ください。
RAMユーザーが作成され、ApsaraVideo VODへのアクセスに使用されます。 Alibaba CloudアカウントのAccessKeyペアの漏洩によるセキュリティリスクを防ぐため、RAMユーザーを作成し、ApsaraVideo VODへのアクセスに必要な権限をRAMユーザーに付与することを推奨します。 その後、RAMユーザーのAccessKeyペアを使用してApsaraVideo VODにアクセスできます。 詳細については、「RAMユーザーの作成と権限付与」をご参照ください。
JavaScript用アップロードSDKは、次のブラウザで使用できます。
Internet Explorer 10以降
Edge
Google Chrome、Firefox、またはSafariのメジャーバージョン
Android、iOS、またはWindows Phoneが提供するデフォルトのブラウザのメジャーバージョン
ダウンロードリンク: Upload SDK for JavaScript V1.5.6とデモソースコード (jqueryとVue)
プロセスのアップロード
クライアントアップロードSDKは、ファイルをOSSバケットにアップロードするロジックをカプセル化します。 クライアントからメディア・ファイルをアップロードすると、サーバーで転送することなく、ApsaraVideo VODによって割り当てられたOSSバケットにファイルが直接アップロードされます。 したがって、クライアントを認証する必要があります。 アップロードURLと資格情報を取得するには、アプリケーションサーバーに認証サービスを展開する必要があります。 クライアントのアップロードSDKは、アップロード資格情報に基づく承認とSTSトークンに基づく承認をサポートしています。 アップロード資格情報の使用を推奨します。 詳細については、「資格情報とSTSの比較」をご参照ください。
アップロードURLとアップロード資格情報を使用してメディアファイルをアップロードするプロセス
次の図は、アップロードURLとアップロード資格情報を使用してメディアファイルをアップロードする完全なプロセスを示しています。 この例では、ApsaraVideo VOD SDKを統合してアップロードURLと認証情報を取得します。
ユーザーは、ApsaraVideo VOD SDKなどのアプリケーションサーバーに認証サービスをデプロイして、アップロードURLと資格情報を取得します。
クライアントは、アップロードURLとアップロード資格情報を要求する要求をアプリケーションサーバーに送信します。
アプリケーションサーバーがApsaraVideo VODにリクエストを送信し、アップロードURLと資格情報をリクエストします。
ApsaraVideo VODはアップロードURLと資格情報を返します。
説明ApsaraVideo VODはメディアIDも生成し、メディアのライフサイクル管理とメディア処理で使用できます。
ビデオの場合、メディアIDは
VideoId
パラメーターで返されます。画像の場合、メディアIDは
ImageId
パラメーターで返されます。補助メディアアセットの場合、メディアIDは
MediaId
パラメーターで返されます。返されたメディアIDは、メディアアセット管理、オーディオおよびビデオの再生、メディア処理などの後続のタスクで必要となるものを適切に保持します。
アプリケーションサーバーは、アップロードURLと資格情報をクライアントに返します。
説明アプリケーションサーバーは、アップロードURLまたは資格情報に対してBase64デコードを実行する必要はありません。
クライアントは、アップロードURLと資格情報を使用して、アップロードインスタンスを初期化します。
クライアントはアップロードパラメータを構築してアップロード要求を送信する。
OSSはアップロード結果を返します。
説明事前にコールバックを設定して、アップロードイベントに関する通知を受け取ることもできます。
STSトークンを使用してメディアファイルをアップロードするプロセス
STSトークンに基づく権限付与を使用する場合は、RAMロールを作成し、ApsaraVideo VODにアクセスするための権限をRAMロールに付与する必要があります。 詳細については、「STSを使用した動画のアップロード」をご参照ください。
次の図は、STSトークンを使用してメディアファイルをアップロードする完全なプロセスを示しています。
ユーザーは、ApsaraVideo VOD SDKなどのアプリケーションサーバーに認証サービスをデプロイして、一時的なSTSトークンを取得します。
クライアントは、STSトークンを要求する要求をアプリケーションサーバーに送信します。
アプリケーションサーバーは、STSトークンを要求する要求をSTSに送信します。
STSはトークンを返します。
アプリケーションサーバーはSTSトークンをクライアントに返します。
クライアントはSTSトークンを使用してアップロードインスタンスを初期化します。
クライアントはアップロードパラメータを構築してアップロード要求を送信します。
OSSはアップロード結果を返します。
説明事前にコールバックを設定して、アップロードイベントに関する通知を受け取ることもできます。
アップロード資格情報またはSTSトークンの設定
このセクションでは、オーディオおよびビデオファイルのアップロード資格情報を設定する方法について説明します。 画像アップロード資格情報を取得するには、CreateUploadImage操作を呼び出します。
アップロードURLと資格情報の設定
onUploadstarted
コールバックでアップロードURLと資格情報を設定します。uploadInfo
はコールバックに含まれます。const {VideoId,UploadAuth,UploadAddress} = data; uploader.setUploadAuthAndAddress(uploadInfo,UploadAuth,UploadAddress,VideoId);
パラメーター
説明
uploadInfo
値は、onUploadstartedコールバックの最初のパラメーターから取得できます。
uploadAuth
値は、CreateUploadVideo操作に対する応答から取得できます。
uploadAddress
値は、CreateUploadVideo操作に対する応答から取得できます。
videoId
値は、CreateUploadVideo操作に対する応答から取得できます。
アップロード資格情報の有効期限が切れた後にアップロードを再開する
onUploadTokenExpiredコールバックでresumeUploadWithAuth操作を呼び出して、アップロード資格情報の有効期限が切れた後にアップロードを再開します。 RefreshUploadVideo操作に対する応答で返された新しいアップロード資格情報にuploadAuthを設定します。
const {VideoId,UploadAuth,UploadAddress} = data; uploader.resumeUploadWithAuth(UploadAuth);
STSトークンの設定
setSTSTokenを呼び出して、ファイルアップロード用のSTSトークンを設定します。
onUploadstarted
コールバックでsetSTSTokenを呼び出します。uploadInfo
はコールバックに含まれます。var info = data.SecurityTokenInfo uploader.setSTSToken(uploadInfo,info.AccessKeyId,info.AccessKeySecret,info.SecretToken);
パラメーター
説明
uploadInfo
値は、onUploadstartedコールバックの最初のパラメーターから取得できます。
accessKeyId
値は、CreateSecurityToken操作に対する応答から取得できます。
accessKeySecret
値は、CreateSecurityToken操作に対する応答から取得できます。
secretToken
値は、CreateSecurityToken操作に対する応答から取得できます。
STSトークンの有効期限が切れた後にアップロードを再開する
onUploadTokenExpiredコールバックでresumeUploadWithSTSTSTokenを呼び出して、有効期限が切れた後にアップロード資格情報を更新します。
var info = data.SecurityTokenInfo uploader.resumeUploadWithSTSToken(info.AccessKeyId, info.AccessKeySecret, info.SecretToken);
ファイルのアップロード
このセクションで説明する手順を実行して、アップロードSDK for JavaScriptを使用してファイルをアップロードします。
webクライアントでのアップロードが中断されると、ファイルを再アップロードしようとすると404エラーが発生することがあります。 アップロードSDKをV1.5.3以降に更新し、ファイルを再アップロードできます。 V1.5.3より前のJavaScript用アップロードSDKを使用する場合は、エラーを防ぐためにファイルを再アップロードする前にファイルの名前を変更してください。
複数のファイルを同時にアップロードする場合は、複数のアップロードインスタンスを作成できます。 各アップロードインスタンスは、1つのファイルのアップロードタスクを表します。 アップロードインスタンスを使用して、複数のファイルを同時にアップロードすることはできません。
アップロードSDK for JavaScriptを統合します。
アップロードSDK for JavaScriptパッケージをダウンロードします。 詳細については、「SDKの概要とダウンロード」をご参照ください。 アップロードSDKは、外部モジュールの部分的なサポートのみを提供します。
import
またはrequire
メソッドを呼び出してファイルを参照すると、ReferenceError: OSS is not defined
エラーメッセージが返されます。 次のいずれかの方法を使用して、ビジネス要件に基づいてファイルを参照できます。(推奨) HTMLでのスクリプトによる参照
<!-- The es6-promise file is required for Internet Explorer. Internet Explorer 10 and later versions are supported. --> <script src="../lib/es6-promise.min.js"></script> <script src="../lib/aliyun-oss-sdk-6.17.1.min.js"></script> <script src="../aliyun-upload-sdk-1.5.5.min.js"></script>
モジュールを使用した参照
ウィンドウにObject Storage Service (OSS) モジュールを手動で追加できます。 サンプルコード:
説明スクリプトを使用してHTMLページのファイルを既に参照している場合は、モジュールを追加する必要はありません。
import OSS from '../lib/aliyun-upload-sdk/lib/aliyun-oss-sdk-6.17.1.min' window.OSS = OSS; import '../lib/aliyun-upload-sdk/aliyun-upload-sdk-1.5.5.min'
アップロードURLとアップロード資格情報の取得またはアップロード認証用のSTSトークン。
アップロードSDK for JavaScriptを使用してファイルをアップロードする場合、AppServerからアップロード資格情報を取得し、Alibaba Cloud上のOSSサーバーにファイルをアップロードする必要があります。 AppServerからアップロード資格情報を取得した後、SDKの設定で資格情報を指定します。 次のいずれかの方法を使用して、アップロード資格情報を取得できます。
アップロードURLと資格情報を取得する方法の詳細については、「アップロードURLと資格情報の取得」をご参照ください。
STSトークンの取得方法の詳細については、「STSトークンの取得」をご参照ください。
アップロード結果
取得したアップロードURLと資格情報、または取得したSTSトークンを使用して、アップロードインスタンスを初期化します。
アップロード資格情報またはSTSトークンを使用して、アップロードインスタンスを初期化します。 アップロードインスタンスの初期化には、アップロード資格情報を使用することを推奨します。
アップロードインスタンスを初期化する前に、初期化コールバックを設定する必要があります。
初期化コールバックを設定します。
AliyunUpload.Vod
のコールバックを設定します。 次のサンプルコードは、アップロードインスタンスを初期化するときに指定できる設定の例を示しています。説明ApsaraVideo VODのサポートされているリージョンと対応するエンドポイントの詳細については、「ApsaraVideo VODのリージョンID」をご参照ください。
アップロードインスタンスを初期化します。 アップロードURLとアップロード資格情報またはSTSトークンを使用して、ビジネス要件に基づいてアップロードインスタンスを初期化できます。
onUploadstarted
コールバックでアップロード資格情報を取得または更新します。 次のいずれかの方法を使用して、ビジネス要件に基づいてアップロードインスタンスを初期化します。(推奨) アップロードURLとアップロード資格情報の使用
アップロードの開始時に発生する
onUploadStarted
コールバックのsetUploadAuthAndAddress(uploadFileInfo, uploadAuth, uploadAddress,videoId)
メソッドを呼び出して、アップロードURLと認証情報を指定します。オーディオまたはビデオファイルをアップロードするサンプルコード
説明onUploadTokenExpired
コールバックは、アップロード資格情報の有効期限が切れると発生します。resumeUploadWithAuth(uploadAuth)
メソッドを呼び出して、新しい資格情報を設定し、アップロードを再開します。画像をアップロードするサンプルコード
説明画像のアップロード時にアップロード資格情報は自動的に更新されません。 アップロード資格情報の有効期限が切れると、ImageIdは無効になり、削除できます。 この場合、画像をアップロードするための新しい資格情報を取得する必要があります。
STSトークンの使用
アップロードの開始時に発生する
onUploadStarted
コールバックのsetSTSToken(uploadInfo, accessKeyId, accessKeySecret, secretToken);
メソッドを呼び出して、取得したSTSトークンを指定します。説明STSトークンの有効期限が切れると、
onUploadTokenExpired
コールバックが発生します。resumeUploadWithSTSTSToken (accessKeyId, accessKeySecret, secretToken)
メソッドを呼び出して、新しいSTSトークンを設定し、アップロードを再開します。
アップロードするファイルの種類に基づいて、アップロードのパラメーターを設定します。
アップロードするファイルを選択します。
<form action=""> <input type="file" name="file" id="files" multiple/> </form> userData = ''; document.getElementById("files") .addEventListener('change', function (event) { for(var i=0; i<event.target.files.length; i++) { // The logic code. } });
選択したファイルをアップロードリストに追加します。
uploader.addFile(file,null,null,null,'{"Vod":{}}');
パラメーター
必須
タイプ
説明
file
必須
ファイル
アップロードするビデオまたはオーディオファイル。
endpoint
選択可能
String
OSSエンドポイント。 ファイルをアップロードするリージョンに基づいて、OSSエンドポイントを指定します。 nullを指定した場合、ファイルはAppServerによって選択されたエンドポイントにアップロードされます。
バケット
選択可能
String
ファイルをアップロードするバケット。 nullを指定した場合、ファイルはAppServerによって選択されたバケットにアップロードされます。
object
選択可能
String
ファイルをアップロードするオブジェクト。 nullを指定した場合、実際の値はAppServerによって決定されます。
paramData
選択可能
String
アップロードするビデオまたはオーディオファイルに関する情報 (ビデオまたはオーディオファイルのタイトルと説明、ビデオまたはオーディオファイルのトランスコードとコールバックの設定など) 。 STSトークンを使用してビデオまたはオーディオファイルをApsaraVideo VODにアップロードする場合は、
paramData
を指定できます。paramData
の値はJSON文字列です。 リクエストでVod
を指定する必要があります。paramData
パラメーターでサポートされているパラメーターをVod
の下にネストできます。 詳細については、「CreateUploadVideo」または「CreateUploadImage」をご参照ください。サンプルコード:
説明STSトークンを使用してファイルをアップロードする場合にのみ、SDKにparamDataを指定する必要があります。 アップロードURLとアップロード資格情報を使用してファイルをアップロードする場合は、CreateUploadVideoまたはCreateUploadImage操作を呼び出すときにのみparamDataを指定します。
WorkflowIdとTemplateGroupIdの両方を指定した場合、WorkflowIdパラメーターの値が有効になります。
ビデオまたはオーディオファイルのタイトルとカテゴリIDを指定します。
var paramData = '{"Vod":{"Title":"test","CateId":"234"}}';
ビデオファイルまたはオーディオファイルのタイトルとトランスコードテンプレートグループのIDを指定します。
var paramData = '{"Vod":{"Title":"test","TemplateGroupId":"e6bb587b5365ac38a41462a4940****"}}';
ビデオまたはオーディオファイルのタイトルとワークフローのIDを指定します。
var paramData = '{"Vod":{"Title":"test","WorkflowId":"e2d027f16b5ee9cdf126266d32d****"}}';
アップロードを開始します。
startUpload()
メソッドを呼び出してアップロードを開始します。uploader.startUpload();
アップロードの開始時にアップロードの進行状況を同期するには、
onUploadProgress
コールバックを起動します。ファイルのアップロード時にアップロード結果を返すには、
onUploadSucceed
コールバックを起動します。
アップロード結果
ビデオまたはオーディオファイルがアップロードされると、videoIdが返されます。 次に、ファイルを再生するための再生URLを取得する必要があります。 詳細については、「再生資格情報を使用したビデオの再生」をご参照ください。
imageUrlは、画像のアップロード時に自動的には返されません。 画像のURLを取得するには、画像をアップロードする前にImageUploadCompleteイベントのコールバックを設定します。 FileURLは、ImageUploadCompleteコールバックで取得できます。 詳細については、「コールバックの設定」をご参照ください。 URL署名を有効にした場合、URLは有効期間が経過すると期限切れになります。 詳細については、「URL署名の設定」をご参照ください。
高度な機能
アップロード管理
アップロードの停止
ファイルがアップロードされている場合にのみ、stopUpload
を呼び出すことができます。 それ以外の場合、API操作は有効になりません。
uploader.stopUpload();
キュー管理
次のAPIを呼び出して、アップロードまたはアップロード中のファイルを管理できます。 次のセクションでは、サポートされているAPI操作について説明します。
listFiles
返されるデータには、addFileを呼び出してアップロードされたファイルに関する情報が含まれます。 返されるデータのfileプロパティは、ファイルタイプを示します。 リストをトラバースして、管理するファイルのインデックスを取得できます。
var list = uploader.listFiles(); for (var i=0; i<list.length; i++) { log("file:" + list[i].file.name); }
deleteFile
uploader.deleteFile(index);// The index of the file that you want to delete. The index is returned by the listFiles operation.
cancelFile
説明cancelFile
が呼び出されると、oss is cancel as error
メッセージがコンソールに表示されます。 これにより、アップロードされたパーツがストレージスペースを占有するのを防ぎ、ストレージコストを削減します。アップロードをキャンセルした後にアップロードを再開する場合は、アップロードを再開する前に
uploader.resumeFile(index);
を使用してファイルを復元する必要があります。
uploader.cancelFile(index);
resumeFile
uploader.resumeFile(index);
cleanList
uploader.cleanList();
再開可能なアップロード
ファイルのアップロード中に強制的なページのシャットダウンやブラウザの故障などのエラーが発生し、ファイルを再アップロードしようとすると、アップロードSDK for JavaScriptはブレークポイントからアップロードを再開し、onUploadstarted
コールバックからアップロード資格情報を取得します。 アップロードURLと資格情報を使用してファイルをアップロードする場合は、ApsaraVideo VODのAPI操作を呼び出して、videoIdの値に基づいてブレークポイント情報を取得します。 サンプルコード:
onUploadstarted: function (uploadInfo) {
if (Upload method 1) {
if(!uploadInfo.videoId)// No error occurred during file upload.
{
// Call the CreateUploadVideo operation in your environment.
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress,videoId);
}
else// If the videoId parameter is not empty, update the upload credential based on the value of videoId.
{
// Call the RefreshUploadVideo operation in your environment to update the upload credential.
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress);
}
}
else(Upload method 2)
{
// Call the setSTSToken operation to obtain the STS token in your environment.
uploader.setSTSToken(uploadInfo, accessKeyId, accessKeySecret,secretToken);
}
}
次のメソッドを呼び出して、ブレークポイント情報を取得できます。
uploader.getCheckpoint(file);