オブジェクトのデータの一部だけが必要な場合は、部分ダウンロードを使用することで、指定のコンテンツをダウンロードできます。

部分ダウンロードの完全なコードについては、『GitHub』をご参照ください。

部分ダウンロードを行うには次のコードを実行します。

using Aliyun.OSS;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
var objectName = "<yourObjectName>";
var downloadFilename = "<yourDownloadFilename>";
// Create an OSSClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    var getObjectRequest = new GetObjectRequest(bucketName, objectName);
    // Set the range, which is from the 20th byte to the 100th byte.
    getObjectRequest.SetRange(20, 100);
    // Start range download. The setRange of getObjectRequest can be used to implement multipart download and resumable download.
    var obj = client.GetObject(getObjectRequest);
    // Download the data and write it into a file.
    using (var requestStream = obj.Content)
    {
        byte[] buf = new byte[1024];
        var fs = File.Open(downloadFilename, FileMode.OpenOrCreate);
        var len = 0;
        while ((len = requestStream.Read(buf, 0, 1024)) ! = 0)
        {
            fs.Write(buf, 0, len);
        }
        rs.close();
    }
    Console.WriteLine("Get object succeeded");
}
} catch (Exception e) {
{
    Console.WriteLine("Get object failed. {0}", ex.Message);
}

GetObjectRequest の以下のパラメーターを設定します。

パラメーター 説明
Range オブジェクトの送信範囲を指定します。
ModifiedSinceConstraint 指定された時間がファイルの実際の変更時間より早い場合、ファイルは正常に送信されます。 それ以外の場合は、304 Not Modified エラーが返されます。
UnmodifiedSinceConstraint パラメーターに渡された時間がファイルの実際の変更時刻と同じかそれより遅い場合、ファイルは通常どおりに送信されます。それ以外の場合、412 事前条件失敗エラーが返されます。
MatchingETagConstraints ETag のグループ内でパスします。 渡される ETag がオブジェクトファイルの ETag と一致する場合、ファイルは正常に送信されます。 それ以外の場合、412 事前条件失敗エラーが返されます。
NonmatchingEtagConstraints ETag のグループ内でパスします。 渡される ETag がオブジェクトファイルの ETag と一致しない場合、ファイルは正常に送信されます。 それ以外の場合は、304 Not Modifiedエラーが返されます。
ResponseHeaderOverrides OSS から返されるリクエスト内のいくつかのヘッダーをカスタマイズします。