我有一个 UWP 应用程序,它使用适用于 .NET 的 AWS 开发工具包(高级 API)将文件上传到 S3 存储桶,即 TransferUtility。
当我上传小尺寸的录音文件时,这个 API 工作得很好,但是当我上传较大的文件时,文件似乎没有被上传,它会抛出以下错误:
发送请求时发生错误。// 在某些测试
中,任务被取消。
为了解决这个错误,我从互联网上引用了多个资源,但无法获得解决方案。我还尝试向 TransferUtilityUploadRequest 添加不同的参数,即 PartSize 以确定多部分段的大小,添加 TransferUtilityConfig 作为 transferUtility 的附加参数,配置发送上传请求时使用的各种 RegionEndPoints。在将大文件上传到 s3 存储桶时,添加这些更改没有任何区别。
下面是我正在使用的代码片段
int MB_SIZE = (int)Math.Pow(2, 20);
var s3Client = new AmazonS3Client(objUploadRecording.AccessKeyId, objUploadRecording.SecretAccessKey,objUploadRecording.Token, region);
var transferUtilityConfig = new TransferUtilityConfig
{
// Use 5 concurrent requests.
ConcurrentServiceRequests = 5,
// Use multipart upload for file size greater 1 MB.
MinSizeBeforePartUpload = 1 * MB_SIZE,
};
using (var transferUtility = new TransferUtility(s3Client, transferUtilityConfig))
{
var uploadRequest = new TransferUtilityUploadRequest
{
BucketName = objUploadRecording.BucketName,
Key = objUploadRecording.S3Filename,
FilePath = objUploadRecording.FilePath,
// Set size of each part for multipart upload to 1 MB
PartSize = 1 * MB_SIZE
};
uploadRequest.UploadProgressEvent += OnUploadProgressEvent;
CancellationToken cancellationToken = default(CancellationToken);
try
{
await transferUtility.UploadAsync(uploadRequest, ancellationToken);
}
catch (Exception ex)
{
LoggingServices.Instance.WriteLine<RecordingListPage>("AWS Upload
Error: " + ex.Message.ToString(), MetroLog.LogLevel.Error);
}
谁能指导我在哪里做错了,或者我必须在此处添加哪些其他参数才能完成这项工作?