对于AWS SDK for .NET中的分片上传,我们可以通过以下方法来解决崩溃的问题:
当上传的文件尺寸比较大时,可以将PartSize设置为一个比较小的值,以确保文件能够成功上传。例如:
var partSize = 5 * 1024 * 1024; var fileTransferUtility = new TransferUtility(s3Client);
如果您的S3 bucket启用了加密功能,需要设置ServerSideEncryptionMethod属性:
var fileTransferUtilityRequest = new TransferUtilityUploadRequest { BucketName = bucketName, FilePath = filePath, PartSize = partSize, Key = objectKey, CannedACL = S3CannedACL.NoACL, ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS };
可以通过以下方式来将上传请求分成多个部分:
var putRequest = new TransferUtilityUploadRequest { StorageClass = S3StorageClass.Standard, PartSize = 6291456, //6MB Key = keyPrefix + "/" + filename, BucketName = bucketName, InputStream = stream, ContentType = contentType };
除此之外,还要确保设置了TransferUtilityConfig的Timeout属性:
var fileTransferUtilityConfig = new TransferUtilityConfig { Timeout = TimeSpan.FromHours(1), };
var fileTransferUtility = new TransferUtility(s3Client, fileTransferUtilityConfig);
这些方法可以大大提高S3分片上传的稳定性和可靠性,确保文件成功上传。