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

Object Storage Service:部分ダウンロード

最終更新日:Dec 05, 2024

範囲ダウンロードを使用して、オブジェクトから特定の範囲のデータをダウンロードできます。

使用上の注意

  • WebpackやBrowserifyなどのパッケージングツールを使用する場合は、npm install ali-OSSコマンドを実行して、oss SDK for Browser.jsをインストールします。

  • ブラウザからOSSバケットにアクセスしたいが、バケットにCORSルールが設定されていない場合、ブラウザはリクエストを拒否します。 したがって、ブラウザからバケットにアクセスする場合は、バケットのCORSルールを設定する必要があります。 詳細については、「インストール」をご参照ください。

  • ほとんどの場合、ブラウザではOSS SDK for Browser.jsが使用されます。 AccessKeyペアが公開されないようにするには、Security Token Service (STS) から取得した一時的なアクセス資格情報を使用してOSSにアクセスすることを推奨します。

    一時的なアクセス資格情報は、AccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 一時的なアクセス資格情報を取得する方法の詳細については、「一時的なアクセス権限付与にSTSを使用する」をご参照ください。

サンプルコード

次のコードでは、範囲のダウンロードを実行する方法の例を示します。

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

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

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

    // Query DOM. 
    const download = document.getElementById('download')
    // For an object that is 1,000 bytes in size, the valid range is within the range from byte 0 to byte 999. 
    // If the specified value range is invalid, the entire object is downloaded. For example, if the specified range includes a negative number or the specified value is greater than the object size, all content of the object is downloaded. 
    const start = 0, end = 999
    // Configure an event listener. 
    download.addEventListener('click', () => {
      client.get('example.txt',{
        headers: {          
          Range: `bytes=${start}-${end}`,
        },
      }).then(r => {
        // Convert the returned data to a Blob object that can be downloaded. 
        const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
        // Create a tag. 
        const link = document.createElement('a')
        // Add the href attribute to the tag. 
        link.href = window.URL.createObjectURL(newBlob)
        // Specify the name of the object after it is downloaded to your local device. 
        link.download = 'example.txt'
        // Download the object. 
        link.click()
        // Remove the URL that is added to the tag. 
        window.URL.revokeObjectURL(link.href)
      })
    })

  </script>
</body>

</html>

関連ドキュメント

  • 範囲のダウンロードを実行するために使用される完全なサンプルコードについては、『GitHub』をご参照ください。

  • 範囲ダウンロードを実行するために呼び出すことができるAPI操作の詳細については、「GetObject」をご参照ください。