gpt4 book ai didi

c# - 如何使用 Amazon.Glacier.Transfer.Archive TransferManager.Upload 通过 .NET 将大型 zip 文件上传到 Amazon Glacier?

转载 作者:行者123 更新时间:2023-11-30 17:50:22 30 4
gpt4 key购买 nike

[编辑]:问题的重点是如何在亚马逊的 .NET SDK 中正确使用 Amazon.Glacier.Transfer.ArchiveTransferManager.Upload。

我正在编写一个简单的应用程序来压缩目录并将其上传到亚马逊的 Glacier 存储。我能够上传一个简单的目录 (12MB),但是当我尝试对更大的目录 (4GB) 进行同样的操作时,我在尝试上传时遇到错误:“无效的内容长度:0”。

此外,当我对小目录进行测试时,我的程序在上传后从未到达显示 ArchiveId 和 Checksum 的行。

这是我的代码:

private static ArchiveTransferManager manager;
private static string vaultName = "SuperDuperBackUp";
private static int percentComplete;

public static void Main(string[] args)
{
try
{
Console.WriteLine("Zip it good.");
var directory = @"E:\Adventures";
var zipFile = @"E:\Adventures.zip";
ZipFile.CreateFromDirectory(directory, zipFile, CompressionLevel.Optimal, includeBaseDirectory: false);

Console.WriteLine("To the cloud!");
using (manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast1))
{
UploadArchive(zipFile);
}
}
catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
catch (Exception e) { Console.WriteLine(e.Message); }

Console.WriteLine("Done.");
Console.Read();
}

private static void UploadArchive(string archiveToUpload)
{
percentComplete = 0;
var uploadOptions = new UploadOptions();
uploadOptions.StreamTransferProgress += new EventHandler<StreamTransferProgressArgs>(onStreamTransferProgress);
var archive = manager.Upload(vaultName, "archive description", archiveToUpload, uploadOptions);

//never gets here
Console.WriteLine("ArchiveId: {0}, CheckSum: {1}", archive.ArchiveId, archive.Checksum);
}

private static void onStreamTransferProgress(object sender, StreamTransferProgressArgs args)
{
Console.WriteLine("Progress: {0} / {1} ({2}%)", args.TransferredBytes, args.TotalBytes, args.PercentDone);
percentComplete = args.PercentDone;
}

最佳答案

您可以使用 amazon glacier multipart upload Low-Level API 而不是使用 ArchiveTransferManager(High-Level API),并在此处实现此文档。

文档:http://docs.aws.amazon.com/amazonglacier/latest/dev/uploading-archive-mpu.html

我使用 multipart upload Low-Level API 上传了大小超过 20 GB 的文件没有任何问题。

关于c# - 如何使用 Amazon.Glacier.Transfer.Archive TransferManager.Upload 通过 .NET 将大型 zip 文件上传到 Amazon Glacier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830557/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com