AWS docs :
API TransferUtilityUploadRequest PartSize, . StreamTransferProgress . , .
API, , , - , . :
var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1);
var uploadResponses = new List<UploadPartResponse>();
var initiateRequest = new InitiateMultipartUploadRequest
{
BucketName = existingBucketName,
Key = keyName
};
var initResponse = s3Client.InitiateMultipartUpload(initRequest);
var contentLength = new FileInfo(filePath).Length;
var partSize = 5242880;
try
{
long filePosition = 0;
for (var i = 1; filePosition < contentLength; ++i)
{
var uploadRequest = new UploadPartRequest
{
BucketName = existingBucketName,
Key = keyName,
UploadId = initResponse.UploadId,
PartNumber = i,
PartSize = partSize,
FilePosition = filePosition,
FilePath = filePath
};
uploadResponses.Add(s3Client.UploadPart(uploadRequest));
filePosition += partSize;
}
var completeRequest = new CompleteMultipartUploadRequest
{
BucketName = existingBucketName,
Key = keyName,
UploadId = initResponse.UploadId,
};
completeRequest.AddPartETags(uploadResponses);
var completeUploadResponse = s3Client.CompleteMultipartUpload(completeRequest);
}
catch (Exception exception)
{
Console.WriteLine("Exception occurred: {0}", exception.ToString());
var abortMPURequest = new AbortMultipartUploadRequest
{
BucketName = existingBucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
s3Client.AbortMultipartUpload(abortMPURequest);
}
UploadPart, , .