すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:WeChat ミニプログラム SDK を使用したファイルのアップロード

最終更新日:Nov 09, 2025

このトピックでは、WeChat ミニプログラム用の SDK を使用して、ローカルメディアファイルを ApsaraVideo VOD ストレージにアップロードする方法について説明します。

機能の説明

WeChat ミニプログラム SDK は、オーディオ、ビデオ、およびイメージファイルのアップロードをサポートしています。補助メディアアセットのアップロードはサポートしていません。

SDK とデモのダウンロード

統合方法

SDK ファイルをプロジェクトにコピーし、関連ページで依存関係をインポートします。

import VODUpload from 'aliyun-upload-sdk-1.0.3.min.js'

基本設定

アップロードインスタンスの初期化

  • SDK インスタンスを初期化する際、アップロード者を識別するために userId パラメーターを渡す必要があります。このパラメーターは必須であり、空にすることはできません。Alibaba Cloud アカウント ID またはカスタムユーザー ID を使用できます。アカウント ID を表示するには、[アカウントセンター] に移動します。userId パラメーターを渡さない場合、または空の値を渡した場合は、エラーが報告されます。

  • region フィールドは、ApsaraVideo VOD でサポートされている リージョン ID のいずれかに設定する必要があります。

var uploader = new VODUpload({
  // Alibaba Cloud アカウントの ID。このパラメーターは空にできません。アカウント ID を表示するには、アカウントセンター (https://account-console.alibabacloud.com/) にアクセスしてください。
  userId: "25346073170691****",
  // ApsaraVideo VOD にファイルをアップロードするリージョン。デフォルト値: 'cn-shanghai'。その他の有効な値には、'eu-central-1' や 'ap-southeast-1' があります。詳細については、「メディアアップロードの概要」をご参照ください。
  region: "cn-shanghai",
  // ネットワークの問題でアップロードが失敗した場合のリトライ回数。デフォルト値: 3。
  retryCount: 3,
  // ネットワークの問題でアップロードが失敗した場合のリトライ間隔。デフォルト値: 2 秒。
  retryDuration: 2,
  // アップロードが開始されます。
  onUploadstarted: function (uploadInfo) {},
  // ファイルがアップロードされました。
  onUploadSucceed: function (uploadInfo) {},
  // ファイルのアップロードに失敗しました。
  onUploadFailed: function (uploadInfo, code, message) {},
  // アップロードの進行状況。単位: バイト。
  onUploadProgress: function (uploadInfo, totalSize, loadedPercent) {},
  // アップロード認証情報が有効期限切れになりました。
  onUploadTokenExpired: function (uploadInfo) {},
  // すべてのファイルがアップロードされました。
  onUploadEnd: function (uploadInfo) {},
});

認証情報の設定

まず、クライアントの全体的な アップロードプロセス を理解します。次に、希望する権限付与方法に基づいて、対応する権限付与サービスをデプロイします。

  1. アップロード URL と認証情報方式を使用する場合は、権限付与サービスから アップロード URL と認証情報を取得 する必要があります。

  2. セキュリティトークンサービス (STS) トークン方式を使用する場合は、権限付与サービスから STS トークンを取得 する必要があります。

返された権限付与情報を onUploadstarted コールバックで設定します。認証情報が有効期限切れになると、onUploadTokenExpired コールバックがトリガーされます。その後、メソッドを呼び出して認証情報を更新し、新しい認証情報を取得する必要があります。

アップロード URL と認証情報方式

アップロード URL と認証情報を設定するには、setUploadAuthAndAddress メソッドを呼び出します。認証情報が有効期限切れになると、onUploadTokenExpired コールバックがトリガーされます。その後、resumeUploadWithAuth メソッドを呼び出して新しい認証情報を設定し、アップロードを再開できます。

// アップロードが開始されます。
onUploadstarted: function (uploadInfo) {
    console.log('Starting file upload...');
    console.log("onUploadStarted:" + JSON.stringify(uploadInfo))

    var url = "https://alivc-demo.aliyuncs.com/demo/getVideoUploadAuth?title=" + uploadInfo.url + "&fileName=" + uploadInfo.url + "&fileSize=" + uploadInfo.fileSize + "&description=description&coverURL=" + uploadInfo.coverUrl + "&tags=tags";

    wx.request({
        'url': url,
        success: (res => {
            if (res.statusCode === 200) {
                var akInfo = res.data.data;
                uploader.setUploadAuthAndAddress(uploadInfo, akInfo.uploadAuth, akInfo.uploadAddress, akInfo.imageId);
            } else {
                console.log(res)
                uploader.stopUpload();
            }
        }),
        fail: (res => {
            uploader.stopUpload();
            console.log(res)
        })
    });

},
// アップロード認証情報が有効期限切れになりました。
onUploadTokenExpired: function (uploadInfo) {
    const url = "https://alivc-demo.aliyuncs.com/demo/refreshVideoUploadAuth?videoId=" + uploadInfo.videoId;
    
    wx.request({
      'url': url,
      success: (res => {
          if (res.statusCode === 200) {
              var akInfo = res.data.data;
              uploader.resumeUploadWithAuth(akInfo.uploadAuth);
          } else {
              console.log(res)
              uploader.stopUpload();
          }
      }),
      fail: (res => {
          uploader.stopUpload();
          console.log(res)
    })
  });
},

メソッドの説明:

uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)
uploader.resumeUploadWithAuth(uploadAuth)

パラメーター

説明

uploadInfo

onUploadstarted コールバックの最初のパラメーターから値を取得できます。

uploadAuth

CreateUploadVideo 操作によって返されるアップロード認証情報。

uploadAddress

CreateUploadVideo 操作によって返されるアップロード URL。

videoId

CreateUploadVideo 操作によって返されるオーディオまたはビデオ ID。

STS トークン方式

STS トークンを設定するには、setSTSToken メソッドを呼び出します。STS トークンが有効期限切れになると、onUploadTokenExpired コールバックがトリガーされます。その後、resumeUploadWithSTSToken メソッドを呼び出して新しい STS トークンを設定し、アップロードを再開できます。

 /* コールバックメソッド - アップロードが開始されます。*/
onUploadstarted: function (uploadInfo) {
    console.log('Starting file upload...');
    console.log("onUploadStarted:" + JSON.stringify(uploadInfo))
    wx.request({
        url: "https://alivc-demo.aliyuncs.com/demo/getSts",
        // data: data,
        // header: header,
        // method: method,
        success: (res => {
            if (res.statusCode === 200) {
                var akInfo = res.data.data;
                uploader.setSTSToken(uploadInfo, akInfo.accessKeyId, akInfo.accessKeySecret, akInfo.securityToken);
            } else {
                console.log(res)
            }
        }),
        fail: (res => {
            onError(res);
        })
    });

},
// アップロード認証情報が有効期限切れになりました。
onUploadTokenExpired: function (uploadInfo) {
    const url = "https://alivc-demo.aliyuncs.com/demo/getSts";
    
    wx.request({
      'url': url,
      success: (res => {
          if (res.statusCode === 200) {
              var akInfo = res.data.data;
              uploader.resumeUploadWithSTSToken(akInfo.uploadAuth);
          } else {
              console.log(res)
              uploader.stopUpload();
          }
      }),
      fail: (res => {
          uploader.stopUpload();
          console.log(res)
    })
  });
},

メソッドの説明:

uploader.setSTSToken(uploadInfo, accessKeyId, accessKeySecret, secretToken)
uploader.resumeUploadWithSTSToken(accessKeyId, accessKeySecret, secretToken)

パラメーター

説明

uploadInfo

onUploadstarted コールバックの最初のパラメーターから値を取得できます。

accessKeyId

STS トークンの AccessKeyId フィールド。

accessKeySecret

STS トークンの AccessKeySecret フィールド。

secretToken

STS トークンの SecretToken フィールド。

ファイルの追加

<view class="weui-uploader__input-box">
  <view class="weui-uploader__input" bindtap="chooseVideo"></view>
</view>
// ビデオを選択
chooseVideo: function (e) {
    var that = this;
    wx.chooseVideo({
        sourceType: ['album', 'camera'],
        maxDuration: 60,
        compressed: false,
        camera: 'back',
        success: function (res) {
            var file = {url: res.tempFilePath, coverUrl: res.thumbTempFilePath};
            var uploader = that.data.uploader;
            var paramData = '{"Vod":{}}';
            uploader.addFile(file, null, null, null, paramData);
        }
    })
},

メソッドの説明:

uploader.addFile(file,endpoint,bucket,object,paramData)

パラメーター

必須

タイプ

説明

file

はい

File

アップロードするメディアファイル。

endpoint

いいえ

String

OSS エンドポイント。null を指定した場合、実際の値は AppServer によって決定されます。

bucket

いいえ

String

ファイルをアップロードするバケット。null を指定した場合、実際の値は AppServer によって決定されます。

object

いいえ

String

ファイルをアップロードするオブジェクト。null を指定した場合、実際の値は AppServer によって決定されます。

paramData

いいえ

String

アップロードするビデオまたはオーディオファイルに関する情報 (タイトル、説明、トランスコード設定、コールバック設定など)。STS トークンを使用して ApsaraVideo VOD にビデオまたはオーディオファイルをアップロードする場合、paramData を指定できます。

paramData パラメーターの値は、'{"Vod":{}}' のような JSON 文字列です。リクエストで Vod を指定する必要があります。Vod の下に paramData パラメーターでサポートされているパラメーターをネストできます。CreateUploadVideo - オーディオまたはビデオのアップロードアドレスと認証情報の取得 または CreateUploadImage - イメージのアップロードアドレスと認証情報の取得 操作のリクエストパラメーターをネストできます。

アップロードの開始

uploader.startUpload();
  1. ファイルのアップロードが開始されると、onUploadProgress コールバックが呼び出され、アップロードの進行状況が同期されます。

  2. ファイルのアップロードが成功すると、onUploadSucceed コールバックが呼び出され、アップロード結果が返されます。

高度な機能

アップロードアクセラレーションの使用

ギガバイトまたはテラバイト単位の大きなファイル、または中国本土のリージョンから シンガポール リージョンのストレージの場所へのビデオのアップロードなど、リージョンをまたいでアップロードする場合、アップロードアクセラレーション機能を有効にできます。

アップロードアクセラレーション機能を有効にするには、チケットを送信してください。[Alibaba Cloud アカウント UID] と、アップロードアクセラレーションを有効にする [ストレージの場所] を提供する必要があります。

方法 1: アップロード URL と認証情報

この方法を使用してファイルをアップロードする場合は、CreateUploadVideo 操作を呼び出し、UserData パラメーターでキーと値のペアを指定して、アクセラレーション設定を構成します。サンプルコード:

UserData={
  "AccelerateConfig": {
    "Type": "oss",
    "Domain": "https://oss-accelerate.aliyuncs.com"
  }
}

方法 2: STS トークン

この方法を使用してファイルをアップロードする場合は、addFile メソッドを呼び出し、UserData プロパティを parmData パラメーターに追加してから、アップロードコンテンツを構成します。サンプルコード:

uploader.addFile(file,null,null,null,'{"Vod":{"UserData":{"AccelerateConfig":{"Type":"oss","Domain":"https://oss-accelerate.aliyuncs.com"}}}}');

UserData の説明

名前

タイプ

必須

説明

userData

string

いいえ

コールバック設定やアップロードアクセラレーション設定などのカスタム構成。値は JSON 文字列である必要があります。

次の表にパラメーターを説明します。

パラメーター

タイプ

説明

Type

string

アップロードアクセラレーションを有効にするファイルタイプ。値を oss に設定します。

Domain

string

バケットの高速化ドメイン名。デフォルトでは、HTTPS が使用されます。

説明

アップロードアクセラレーションを有効にした後に割り当てられた高速化エンドポイント (例: vod-*******.oss-accelerate.aliyuncs.com) が使用されます。

UserData の設定方法の詳細については、「リクエストパラメーター」をご参照ください。

アップロードの停止

説明

stopUpload は、ファイルがアップロード中の場合にのみ呼び出すことができます。それ以外の場合、stopUpload は効果がありません。

uploader.stopUpload();

キュー管理

次のメソッドを呼び出して、アップロード済みまたはアップロード中のファイルを管理できます:

  • アップロードリストのクエリ

    返されるデータには、addFile を呼び出してアップロードされたファイルに関する情報が含まれます。「file:」は、リスト内の各要素がファイルであることを示します。走査することで、管理したいファイルのインデックスを取得できます。

    var list = uploader.listFiles();
    for (var i=0; i<list.length; i++) {
        console.log("file:" + list[i].file.name);
    }
  • アップロードするファイルの削除

    uploader.deleteFile(index); // 削除したいファイルのインデックス。インデックスは listFiles 操作によって返されます。
  • 単一ファイルのアップロードのキャンセル

    説明
    • cancelFile を呼び出すと、コンソールに oss is cancel as error メッセージが表示されます。これにより、アップロードされた部分がストレージ容量を占有するのを防ぎ、不要なコストを節約できます。

    • キャンセルされたアップロードを再開するには、アップロードを再開する前に uploader.resumeFile(index); を使用してファイルを復元する必要があります。

    uploader.cancelFile(index);
  • 単一ファイルのアップロードの再開

    uploader.resumeFile(index);
  • アップロードリストのクリア

    uploader.cleanList();

トラブルシューティング

WeChat ミニプログラム SDK の使用中にエラーが発生した場合、エラーコードを使用して原因をすばやく特定できます。詳細については、「クライアント側のエラーコード」をご参照ください。