【问题标题】:Amazon S3 - Re-starting a failed uploadAmazon S3 - 重新启动失败的上传
【发布时间】:2017-04-01 07:24:59
【问题描述】:

我将 Amazon S3 与 .NET SDK 以及它们提供的低级 API 一起使用。我正在寻找有关尝试重新启动文件的多部分上传的方法的建议。这是一个重启,例如网络连接中断,或者在文件的所有部分上传到亚马逊之前终止程序的内部异常。

  • 该文件是一个 .MTS 视频文件,大小约为 400MB。
  • 文件块以 5MB 为单位上传。

我正在按照分段上传的文档使用他们的示例代码:-

 for (int i = filePartCounts[0]; filePosition < contentLength; i++)
 {
     if (i == 10)
     {
         throw new Exception();
     }

     UploadPartRequest uploadRequest = new UploadPartRequest
     {
         BucketName = "MyAwesomeBucket",
         Key = "my-file-" + now + ".mts",
         UploadId = initiateResponse.UploadId,
         PartNumber = i,
         PartSize = partSize,
         FilePosition = filePosition,
         FilePath = "C:\\path\\file.MTS",
         Timeout = new TimeSpan(0, 15, 00)
      };

      uploadResposes.Add(client.UploadPart(uploadRequest));
      File.WriteAllText(@"C:\\file\\data.txt", "my-file-" + now + ".mts/" + i + "/" + maxPartNumber);

      filePosition += partSize;

      Console.WriteLine("Successfull uploaded part " + i + " of " + maxPartNumber + " - Bytes " + (filePosition - partSize) + " bytes to " + filePosition + " bytes");
}

由于这是一个原型,我将一条记录保存到一个文本文件中,在这个文件中包含 KeyName、Last Success Part Number 和 Maximum Number of Part Numbers,以便下次程序运行时可以阅读,获取键名,并从未上传的第一个块开始。目前,我通过手动调用模拟了程序错误:-

if (i == 10)
{
    throw new Exception();
}

所以程序在 73 个块中的 9 个之后退出。

我在尝试从 Amazon S3 服务器取回商品时遇到问题。我打电话时遇到异常:-

client.GetObject(request);

我想取回上传的文件部分,然后再继续处理其余部分。出于显而易见的原因,我得到了“指定的密钥不存在”的异常。因为该文件尚未在 Amazon S3 上完成。

我的问题是,如果这不起作用,我如何取回已成功上传到 Amazon S3 的文件部分,然后继续向其中添加第 10 部分?

非常感谢任何帮助! 谢谢。

【问题讨论】:

    标签: c# .net amazon-web-services file-upload amazon-s3


    【解决方案1】:

    在调用CompleteMultipartUpload 之后,分段上传只会作为对象出现在存储桶中。

    http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html

    在那之前,你有两种选择:

    选项 1:您可以使用 AbortMultipartUpload 中止现有的分段上传并重新开始。

    http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadAbort.html

    选项 2:您可以使用 ListParts 获取当前已上传部分的列表,然后上传其余部分。

    http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListParts.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2015-03-17
      • 2015-03-09
      • 2020-06-04
      • 2017-04-03
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多