再開可能アップロードを使用すると、アップロードするファイルを複数のパーツに分割して同時にアップロードできます。 すべてのパーツをアップロードしたら、パーツを組み合わせて完全なオブジェクトにすることができます。 こうして、オブジェクト全体をアップロードすることができます。

現在のアップロードの進行状況は、アップロード中にチェックポイントファイルに記録されます。 処理中にパーツのアップロードに失敗した場合、オブジェクトはアップロードの再開時にチェックポイントファイルに記録され、再開可能アップロードのパーツからアップロードされます。 アップロードが完了すると、チェックポイントは削除されます。

再開可能アップロードの完全なコードについては、『GitHub』をご参照ください。

再開可能アップロードを行うには、次のコードを実行します。

using Aliyun.OSS;
using Aliyun.OSS.Common;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
var objectName = "<yourObjectName>";
var localFilename = "<yourLocalFilename>";
string checkpointDir = "<yourCheckpointDir>";
// Create an OSSClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    //  Configure parameters with UploadFileRequest.
    UploadObjectRequest request = new UploadObjectRequest(bucketName, objectName, localFilename)
    {
        // Specify the size of a part you want to upload.
        PartSize = 8 * 1024 * 1024,
        // Specify the number of threads for simultaneous upload.
        ParallelThreadCount = 3,
        // The progress information of a resumable upload is stored in the checkpointDir directory.  If a part fails to be uploaded, the progress information is used to continue the upload. If the checkpointDir directory is null, the resumable upload does not take effect, and the file that failed to be uploaded is uploaded all over again.
        CheckpointDir = checkpointDir,
    };
    // Start resumable upload.
    client.ResumableUploadObject(request);
    Console.WriteLine("Resumable upload object:{0} succeeded", objectName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
} catch (Exception e) {
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}