Tous les produits
Search
Centre de documentation

ApsaraVideo VOD:SDK de téléchargement pour JavaScript

Dernière mise à jour :Sep 17, 2026

Utilisez le SDK de téléchargement JavaScript pour envoyer des fichiers multimédias vers ApsaraVideo VOD.

Prérequis du navigateur

Navigateur

Pris en charge

Version

IE

✔️

Internet Explorer 10 et versions ultérieures

Microsoft Edge

✔️

Toutes

Chrome

✔️

Versions courantes des navigateurs

Firefox

✔️

Safari

✔️

Navigateur par défaut Android

✔️

Navigateur par défaut iOS

✔️

Navigateur par défaut Windows Phone

✔️

Description des fonctionnalités

Le SDK de téléchargement JavaScript prend uniquement en charge l'envoi de fichiers audio, vidéo et image. Les ressources multimédias auxiliaires ne sont pas prises en charge.

Téléchargement du SDK et de la démo

Méthodes d'intégration

Le SDK de téléchargement JavaScript dépend du SDK OSS. Définissez une valeur valide pour window.OSS. Dans le cas contraire, l'erreur ReferenceError: OSS is not defined se produit.

(Recommandé) Importation à l'aide de <script> dans le code HTML

<!--  es6-promise is required for Internet Explorer. Internet Explorer 10 and later 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.7.min.js"></script>

Importation à l'aide d'un module

Attribuez manuellement le module OSS à window.OSS :

Remarque

Ignorez cette étape si vous avez déjà inclus les fichiers via des balises <script>.

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.7.min'

Paramètres de base

Initialisation de l'instance de téléchargement

  • Spécifiez le paramètre userId pour identifier l'utilisateur qui effectue le téléchargement. Utilisez un ID de compte Alibaba Cloud ou un ID utilisateur personnalisé disponible dans le Alibaba Cloud Account Center. Si le paramètre userId est nul ou non spécifié, une erreur se produit.

  • Définissez le paramètre region sur un ID de région ApsaraVideo VOD pris en charge. Pour plus d'informations, consultez la rubrique ID de région ApsaraVideo VOD.

var uploader = new AliyunUpload.Vod({
  // Required. The identity of the uploader. The value can be an Alibaba Cloud account ID or a custom user ID. You can view the ID in Alibaba Cloud Account Center (https://account-console.alibabacloud.com/).
  userId: "122",
  // The regions where you want to upload the files. Default value: cn-shanghai. 
  // Examples: eu-central-1 and ap-southeast-1.
  region: "",
  // The size of each part in a multipart upload. Unit: bytes. The size cannot be smaller than 100 KB (100 × 1024). Default size: 1 MB (1 × 1024 × 1024).
  partSize: 1048576,
  // The maximum number of parts that can be uploaded in parallel. Default value: 5.
  parallel: 5,
  // The maximum number of times the system retries the upload when a network error occurs. Default value: 3.
  retryCount: 3,
  // The interval at which the system retries the upload when a network error occurs. Default value: 2. Unit: seconds.
  retryDuration: 2,
  // The upload is started.
  onUploadstarted: function (uploadInfo) {},
  // The upload is successful.
  onUploadSucceed: function (uploadInfo) {},
  // The upload fails.
  onUploadFailed: function (uploadInfo, code, message) {},
  // The upload progress. Unit: bytes.
  onUploadProgress: function (uploadInfo, totalSize, loadedPercent) {},
  // The upload credential or STS token expires.
  onUploadTokenExpired: function (uploadInfo) {},
  // All files are uploaded.
  onUploadEnd: function (uploadInfo) {},
});

Configuration des informations d'identification

Avant de poursuivre, assurez-vous de comprendre le processus de téléchargement côté client et d'avoir déployé un service d'autorisation. Pour plus d'informations, consultez la rubrique Téléchargement depuis les clients.

  1. Si vous utilisez la Méthode 1 : URL de téléchargement et informations d'identification, obtenez les URL de téléchargement et les informations d'identification auprès du service d'autorisation.

  2. Si vous utilisez la Méthode 2 : jeton STS, obtenez un jeton STS auprès du service d'autorisation. Pour plus d'informations, consultez la rubrique Obtention d'un jeton STS.

Configurez les informations d'autorisation renvoyées dans le rappel onUploadstarted. Lorsque les informations d'identification expirent, le rappel onUploadTokenExpired est déclenché. Obtenez à nouveau des informations d'identification en appelant l'opération de rafraîchissement.

Méthode 1 : URL de téléchargement et informations d'identification

Appelez setUploadAuthAndAddress pour configurer l'URL de téléchargement et les informations d'identification. Si les informations d'identification expirent, le rappel onUploadTokenExpired est déclenché. Appelez resumeUploadWithAuth avec de nouvelles informations d'identification pour reprendre le téléchargement.

// The upload is started.
onUploadstarted: function (uploadInfo) {
  let refreshUrl = 'https://demo-vod.cn-shanghai.aliyuncs.com/voddemo/RefreshUploadVideo?BusinessType=vodai&TerminalType=pc&DeviceModel=iPhone9,2&UUID=59ECA-4193-4695-94DD-7E1247288&AppVersion=1.0.0&Title=haha1&FileName=xxx.mp4&VideoId=' + uploadInfo.videoId
  axios.get(refreshUrl).then(({data}) => {
    let uploadAuth = data.UploadAuth
    let uploadAddress = data.UploadAddress
    let videoId = data.VideoId
    uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress,videoId)
  })
},
// The upload credential expires.
onUploadTokenExpired: function (uploadInfo) {
  // If the upload of a large file times out when you use Method 1 (UploadAuth),
  // call the RefreshUploadVideo operation based on uploadInfo.videoId and re-obtain the value of UploadAuth.
  // Then, call the resumeUploadWithAuth method. In this example, the value of UploadAuth is directly obtained because resumeUploadWithAuth is a test method.
  let refreshUrl = 'https://demo-vod.cn-shanghai.aliyuncs.com/voddemo/RefreshUploadVideo?BusinessType=vodai&TerminalType=pc&DeviceModel=iPhone9,2&UUID=59ECA-4193-4695-94DD-7E1247288&AppVersion=1.0.0&Title=haha1&FileName=xxx.mp4&VideoId=' + uploadInfo.videoId
  axios.get(refreshUrl).then(({data}) => {
    let uploadAuth = data.UploadAuth
    uploader.resumeUploadWithAuth(uploadAuth)
    console.log('upload expired and resume upload with uploadauth ' + uploadAuth)
  })
  self.statusText = 'The upload times out...'
},

Description de la méthode

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

Paramètre

Description

uploadInfo

Premier paramètre du rappel onUploadstarted.

uploadAuth

Informations d'identification de téléchargement renvoyées par l'opération CreateUploadVideo.

uploadAddress

URL de téléchargement renvoyée par l'opération CreateUploadVideo.

videoId

ID audio ou vidéo renvoyé par l'opération CreateUploadVideo.

Méthode 2 : jeton STS

Appelez setSTSToken pour configurer le jeton STS. Si le jeton expire, le rappel onUploadTokenExpired est déclenché. Appelez resumeUploadWithSTSToken avec un nouveau jeton pour reprendre le téléchargement.

 /*Callback method - The upload is started.*/
 onUploadstarted: function (uploadInfo) {
    let stsUrl = "***.***.stsUrl" /*Use the setSTSToken method to obtain the STS token.*/
    axios.get(stsUrl).then(({data}) => {
          var info = data.SecurityTokenInfo
          uploader.setSTSToken(uploadInfo, info.AccessKeyId, info.AccessKeySecret, info.SecretToken);
     })
 },
/*Callback method - The credential times out.*/
 onUploadTokenExpired: function (uploadInfo) { 
     let stsUrl = "***.***.stsUrl"  /*Use the resumeUploadWithSTSToken method to refresh the STS token.*/
     axios.get(stsUrl).then(({data}) => {
         var info = data.SecurityTokenInfo  
         uploader.resumeUploadWithSTSToken(info.AccessKeyId, info.AccessKeySecret, info.SecretToken);      
     })
 },

Description de la méthode

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

Paramètre

Description

uploadInfo

Premier paramètre du rappel onUploadstarted.

accessKeyId

Champ AccessKeyId du jeton STS.

accessKeySecret

Champ AccessKeySecret du jeton STS.

secretToken

Champ SecretToken du jeton STS.

Ajout de fichiers

Écoutez l'événement change sur <input type="file" /> pour ajouter des fichiers à la liste uploader.

JavaScript natif

 <form action="">
   <input type="file" name="file" id="files" multiple/>
 </form>
 
 <script>
   userData = '';
   document.getElementById("files")
    .addEventListener('change', function (event) {
      for(var i=0; i<event.target.files.length; i++) {
        // The logic code.
        uploader.addFile(event.target.files[i],null,null,null,null)
      }
    });
 </script>

Vue

 <template>
  <input type="file" id="fileUpload" @change="fileChange($event)">
 </template>

<script>
  export default {
    data () {
      return {
        file: null,
      }
    },
    methods: {
      fileChange (e) {
        this.file = e.target.files[0]
        if (!this.file) {
          alert("Select the files that you want to upload.")
          return
        }
        var Title = this.file.name
        var userData = '{"Vod":{}}'
        if (this.uploader) {
          this.uploader.stopUpload()
        }
        // Initialize an uploader.
        this.uploader = this.createUploader() 
        this.uploader.addFile(this.file, null, null, null, userData)
      },
    }
  }
</script>

Description de la méthode

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

Paramètre

Obligatoire

Type

Description

file

Oui

Fichier

Fichier à télécharger.

endpoint

Non

Chaîne

Endpoint OSS. Si la valeur est nulle, AppServer sélectionne l'endpoint.

bucket

Non

Chaîne

Bucket cible. Si la valeur est nulle, AppServer sélectionne le bucket.

object

Non

Chaîne

Objet cible. Si la valeur est nulle, AppServer sélectionne l'objet.

paramData

Non

Chaîne

Métadonnées du fichier, telles que le titre, la description, le transcodage et les paramètres de rappel. Spécifiez paramData lors de l'utilisation du téléchargement par jeton STS.

La valeur du paramètre paramData est une chaîne JSON. Exemple : '{"Vod":{}}'. Vous devez spécifier Vod dans la requête. Vous pouvez imbriquer les paramètres pris en charge par le paramètre paramData sous Vod. Vous pouvez imbriquer les paramètres de requête des opérations CreateUploadVideo ou CreateUploadImage.

Démarrage du téléchargement

uploader.startUpload();
  1. Une fois le téléchargement du fichier démarré, le rappel onUploadProgress est invoqué pour synchroniser la progression du téléchargement.

  2. Si le téléchargement du fichier réussit, le rappel onUploadSucceed est invoqué pour renvoyer le résultat du téléchargement.

Affichage de la progression du téléchargement

// The file upload progress. Unit: bytes. You can use this function to obtain the upload progress and display the upload progress on the page.
onUploadProgress: function (uploadInfo, totalSize, progress) {
  console.log("onUploadProgress:file:" + uploadInfo.file.name + ", fileSize:" + totalSize + ", percent:" + Math.ceil(progress * 100) + "%")
  let progressPercent = Math.ceil(progress * 100)
  self.authProgress = progressPercent
  self.statusText = 'The upload is ongoing...'
},

Obtention du résultat du téléchargement

// The upload is successful.
onUploadSucceed: function (uploadInfo) {
  console.log("onUploadSucceed: " + uploadInfo.file.name + ", endpoint:" + uploadInfo.endpoint + ", bucket:" + uploadInfo.bucket + ", object:" + uploadInfo.object)
  self.statusText = 'The upload is successful!'
},
// The upload fails.
onUploadFailed: function (uploadInfo, code, message) {
  console.log("onUploadFailed: file:" + uploadInfo.file.name + ",code:" + code + ", message:" + message)
  self.statusText = 'The upload fails!'
},

Fonctionnalités avancées

Utilisation de l'accélération du téléchargement

Activez l'accélération du téléchargement pour les fichiers volumineux (Go/TB) ou les téléchargements interrégionaux, par exemple depuis la Chine continentale vers la région Singapour.

Pour activer la fonction d'accélération du téléchargement, vous devez soumettre un ticket. Vous devez fournir l'UID du compte Alibaba Cloud et l'adresse de stockage qui doit utiliser l'accélération du téléchargement.

Méthode 1 : URL de téléchargement et informations d'identification

Appelez l'opération CreateUploadVideo et configurez l'accélération dans le paramètre UserData :

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

Méthode 2 : jeton STS

Appelez la méthode addFile avec la propriété UserData dans le paramètre parmData :

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

Description de UserData

Nom

Type

Obligatoire

Description

userData

string

Non

Configurations personnalisées telles que les rappels et l'accélération du téléchargement. Doit être une chaîne JSON.

Le tableau suivant décrit les paramètres.

Paramètre

Type

Description

Type

string

Type d'accélération du téléchargement. Définissez sur oss.

Domain

string

Nom de domaine accéléré. HTTPS par défaut.

Remarque

Un endpoint accéléré attribué après l'activation de l'accélération du téléchargement est utilisé, tel que vod-***.oss-accelerate.aliyuncs.com.

Pour plus d'informations sur la configuration de UserData, consultez la rubrique Descriptions des paramètres de requête.

Arrêt d'un téléchargement

Remarque

stopUpload prend effet uniquement pendant le téléchargement d'un fichier.

uploader.stopUpload();

Gestion d'une liste de fichiers

Utilisez les opérations suivantes pour gérer les fichiers téléchargés ou en cours de téléchargement.

  • listFiles : Interroge la liste de téléchargement.

    Renvoie les fichiers ajoutés via addFile. La propriété file indique le type de fichier. Parcourez la liste pour obtenir les index de fichier pour les opérations de gestion.

    var list = uploader.listFiles();
    for (var i=0; i<list.length; i++) {
        console.log("file:" + list[i].file.name);
    }
  • deleteFile : Supprime un fichier à télécharger.

    uploader.deleteFile(index);//The index of the file that you want to delete. The index is returned by the listFiles operation.
  • cancelFile : Annule le téléchargement d'un fichier.

    Remarque
    • Après avoir appelé cancelFile, le message oss is cancel as error apparaît dans la console. Cela empêche les parties téléchargées d'occuper de l'espace de stockage et d'engendrer des coûts.

    • Pour reprendre un téléchargement annulé, appelez d'abord uploader.resumeFile(index); pour restaurer le fichier.

    uploader.cancelFile(index);
  • resumeFile : Reprend le téléchargement d'un fichier.

    uploader.resumeFile(index);
  • cleanList : Efface la liste de téléchargement.

    uploader.cleanList();

Téléchargement avec reprise

Si un téléchargement échoue en raison d'un plantage de la page ou d'une erreur du navigateur, le SDK reprend le téléchargement au point d'arrêt lors de la nouvelle tentative et obtient les informations d'identification à partir du rappel onUploadstarted. Avec la Méthode 1 : URL de téléchargement et informations d'identification, appelez les API ApsaraVideo VOD en utilisant videoId pour obtenir les informations sur le point d'arrêt :

// The upload is started.
onUploadstarted: function (uploadInfo) {
  // If you use UploadAuth to upload the file, call the uploader.setUploadAuthAndAddress method.
  // If you use UploadAuth to upload the file, call different ApsaraVideo VOD API operations to obtain uploadAuth and uploadAddress based on whether uploadInfo.videoId has a value.
  // If uploadInfo.videoId has a value, call the RefreshUploadVideo operation. Otherwise, call the CreateUploadVideo operation.
  // Take note of the following information: An operation is directly called to obtain UploadAuth because this is a test demo. In actual scenarios, you must call a specific operation to obtain UploadAuth based on whether uploadInfo.videoId has a value.
  // If uploadInfo.videoId has a value, call the RefreshUploadVideo operation.
  // If uploadInfo.videoId is empty, call the CreateUploadVideo operation.
  if (!uploadInfo.videoId) {
    let createUrl = 'https://demo-vod.cn-shanghai.aliyuncs.com/voddemo/CreateUploadVideo?Title=testvod1&FileName=aa.mp4&BusinessType=vodai&TerminalType=pc&DeviceModel=iPhone9,2&UUID=59ECA-4193-4695-94DD-7E1247288&AppVersion=1.0.0&VideoId=5bfcc7864fc14b96972842172207c9e6'
    axios.get(createUrl).then(({data}) => {
      let uploadAuth = data.UploadAuth
      let uploadAddress = data.UploadAddress
      let videoId = data.VideoId
      uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress,videoId)                
    })
    self.statusText = 'The file upload is started...'
    console.log("onUploadStarted:" + uploadInfo.file.name + ", endpoint:" + uploadInfo.endpoint + ", bucket:" + uploadInfo.bucket + ", object:" + uploadInfo.object)
  } else {
    // Display the breakpoint information.
    console.log(uploader.getCheckpoint(uploadInfo.file));
    // If the videoId parameter has a value, the video upload fails. The system resumes the upload from the breakpoint. You must refresh the upload credential based on the value of videoId.
    let refreshUrl = 'https://demo-vod.cn-shanghai.aliyuncs.com/voddemo/RefreshUploadVideo?BusinessType=vodai&TerminalType=pc&DeviceModel=iPhone9,2&UUID=59ECA-4193-4695-94DD-7E1247288&AppVersion=1.0.0&Title=haha1&FileName=xxx.mp4&VideoId=' + uploadInfo.videoId
    axios.get(refreshUrl).then(({data}) => {
      let uploadAuth = data.UploadAuth
      let uploadAddress = data.UploadAddress
      let videoId = data.VideoId
      uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress,videoId)
    })
  }
}

Obtention des informations sur le point d'arrêt :

 uploader.getCheckpoint(file);

Gestion des exceptions

En cas d'exception, consultez la section relative au SDK de téléchargement côté client dans la rubrique Codes d'erreur pour identifier la cause.