0

我有一个 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);
        }

谁能指导我在哪里做错了,或者我必须在此处添加哪些其他参数才能完成这项工作?

4

1 回答 1

1

谢谢大家,正如我提到的,我正在使用 aws 高级 SDK 上传文件,但它不起作用。此外,我还没有找到任何其他实现或解决方案可以摆脱我的应用程序中导致的问题因此,我在这里使用了低级 API

这将成功上传文件。有缺点,比如它会部分上传文件,但这对我来说很好。

于 2020-05-08T10:32:38.677 回答