Tous les produits
Search
Centre de documentation

Object Storage Service:Téléchargements conditionnels (SDK Browser.js)

Dernière mise à jour :Aug 18, 2026

Lorsque vous téléchargez un fichier (objet), vous pouvez spécifier une ou plusieurs conditions. Le fichier n'est téléchargé que si les conditions spécifiées sont remplies. Si les conditions ne sont pas satisfaites, une erreur est renvoyée et le téléchargement ne démarre pas.

Notes d'utilisation

  • Lorsque vous utilisez des outils d'empaquetage tels que Webpack et Browserify, installez le SDK OSS pour Browser.js en exécutant la commande npm install ali-oss.

  • Si vous souhaitez accéder à un bucket OSS depuis un navigateur mais qu'aucune règle CORS n'est configurée pour ce bucket, le navigateur rejette la requête. Par conséquent, vous devez configurer des règles CORS pour un bucket si vous souhaitez y accéder depuis un navigateur. Pour plus d'informations, consultez Installation.

  • Dans la plupart des cas, le SDK OSS pour Browser.js est utilisé dans les navigateurs. Afin d'éviter l'exposition de votre paire AccessKey, nous vous recommandons d'utiliser des identifiants d'accès temporaires obtenus via Security Token Service (STS) pour accéder à OSS.

    Les identifiants d'accès temporaires se composent d'une paire AccessKey et d'un jeton de sécurité. La paire AccessKey comprend un AccessKey ID et un AccessKey Secret. Pour plus d'informations sur l'obtention d'identifiants d'accès temporaires, consultez Utiliser STS pour une autorisation d'accès temporaire.

Exemple de code

Le code suivant illustre un téléchargement conditionnel :

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>

<body>
  <button id='upload'>Upload</button>
  <button id='download'>Download</button>
    <!--Import the SDK file.-->
  <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"></script>
  <script type="text/javascript">
      const client = new OSS({
         // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
         region: 'yourRegion',
         authorizationV4: true,
         // The temporary AccessKey ID and AccessKey secret obtained from Security Token Service (STS).
         accessKeyId: 'yourAccessKeyId',
         accessKeySecret: 'yourAccessKeySecret',
         // The SecurityToken obtained from STS.
        stsToken: 'yourSecurityToken',
        // Specify the bucket name. For example, examplebucket.
        bucket: "examplebucket",
      });

    const download = document.getElementById('download')
    const upload = document.getElementById('upload')

    // Upload the file.  
    upload.addEventListener('click', () => {
      // Specify the content of the file to upload.
      const file = new Blob(['examplecontent'])
      // Specify the full path of the file to upload. For example, exampledir/exampleobject.txt.
      const fileName = 'exampledir/exampleobject.txt'
      const result = client.put(fileName, file).then(r => console.log(r))
    })

    // Download the file.
    download.addEventListener('click', () => {
      // Specify the byte range to download.
      const start = 1, end = 5
      client.get('exampledir/exampleobject.txt', {
        headers: {
          // Specify a time in the If-Modified-Since request header. The file is downloaded if the specified time is earlier than the actual modification time of the file. If the specified time is the same as or later than the actual modification time, 304 Not Modified is returned.
          "If-Modified-Since": new Date("1970-01-01").toGMTString()
          // Specify a time in the If-Unmodified-Since request header. The file is downloaded if the specified time is the same as or later than the actual modification time of the file. If the specified time is earlier than the actual modification time, 412 Precondition Failed is returned.
          //"If-Unmodified-Since": new Date(1970-01-01).toGMTString()
          // Specify an ETag in the If-Match request header. The file is downloaded if the specified ETag matches the ETag of the file. If the specified ETag does not match, 412 Precondition Failed is returned.
          //"If-Match": '5B3C1A2E0563E1B002CC607C****'
          // Specify an ETag in the If-None-Match request header. The file is downloaded if the specified ETag does not match the ETag of the file. If the specified ETag matches, 304 Not Modified is returned.
          //"If-None-Match": '5B3C1A2E0563E1B002CC607C****'
        },
      }).then(r => {
        if (r.content.length > 0) {                
          const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
          const link = document.createElement('a')
          link.href = window.URL.createObjectURL(newBlob)
          link.download = 'foo.txt'
          link.click()
          window.URL.revokeObjectURL(link.href)
        } else {
          console.log('Error code', r.res.status)
          console.log('No items to download that meet the conditions')
        }
      })
    })

  </script>
</body>

</html>

Références

  • Pour consulter l'exemple de code complet relatif aux téléchargements conditionnels, rendez-vous sur GitHub example.

  • Pour en savoir plus sur l'opération API, voir GetObject.