Todos los productos
Search
Centro de documentos

Object Storage Service:Descargas condicionales (SDK de Browser.js)

Última actualización: Sep 24, 2026

Al descargar un archivo (objeto), puede especificar una o más condiciones. El archivo se descarga únicamente si se cumplen las condiciones indicadas. Si no se cumplen, se devuelve un error y la descarga no inicia.

Notas de uso

  • Si utiliza herramientas de empaquetado como Webpack o Browserify, instale OSS SDK for Browser.js con el comando npm install ali-oss.

  • Si desea acceder a un bucket de OSS desde un navegador sin que haya reglas de CORS configuradas, el navegador rechaza la solicitud. Por lo tanto, configure las reglas de CORS del bucket antes de acceder a él desde un navegador. Para obtener más información, consulte Installation.

  • En la mayoría de los casos, OSS SDK for Browser.js se usa en navegadores. Para evitar que su par de AccessKey quede expuesto, se recomienda utilizar credenciales de acceso temporales obtenidas de Security Token Service (STS) para acceder a OSS.

    Las credenciales de acceso temporales constan de un par de AccessKey y un token de seguridad. El par de AccessKey incluye un AccessKey ID y un AccessKey secret. Para conocer cómo obtener credenciales de acceso temporales, consulte Use STS for temporary access authorization.

Código de ejemplo

A continuación se muestra un ejemplo de descarga condicional:

<!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>

Referencias

  • Para consultar el código de ejemplo completo de descargas condicionales, revise el ejemplo en GitHub.

  • Para obtener más información sobre la operación de API, consulte GetObject.