如何使用AWS SDK for .NET异步上传多个文件到Amazon S3?

时间:2014-06-18 06:50:02

标签: .net amazon-s3

我正在尝试使用.NET SDK在Amazon S3上异步上传多个文件。任何让我入门的例子都将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:1)

您要查找的Amazon S3AWS SDK for .NET功能是Using the High-Level .NET API for Multipart Upload

  

AWS SDK for .NET公开了一个简化的高级API   分段上传(请参阅Uploading Objects Using Multipart Upload API)。   您可以从文件,目录或流中上传数据。 [...]   您可以选择设置所需的高级选项,例如部件尺寸   用于分段上传,您要使用的线程数   在同时上传部分时,可选的文件元数据,   存储类(STANDARD或REDUCED_REDUNDANCY)或ACL。高层   API提供了TransferUtilityUploadRequest类来设置它们   高级选项。 [强调我的]

Upload a Directory中提供了一个示例代码段:

using System;
using System.IO;
using Amazon.S3;
using Amazon.S3.Transfer;

namespace s3.amazon.com.docsamples
{
    class UploadDirectoryMPUHighLevelAPI
    {
        static string existingBucketName = "*** Provide bucket name ***";
        static string directoryPath      = "*** Provide directory name ***";

        static void Main(string[] args)
        {
            try
            {
                TransferUtility directoryTransferUtility =
                    new TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1));

                // 1. Upload a directory.
                directoryTransferUtility.UploadDirectory(directoryPath,
                                                         existingBucketName);
                Console.WriteLine("Upload statement 1 completed");

                // 2. Upload only the .txt files from a directory. 
                //    Also, search recursively. 
                directoryTransferUtility.UploadDirectory(
                                               directoryPath,
                                               existingBucketName,
                                               "*.txt",
                                               SearchOption.AllDirectories);
                Console.WriteLine("Upload statement 2 completed");

                // 3. Same as 2 and some optional configuration 
                //    Search recursively for .txt files to upload).
                TransferUtilityUploadDirectoryRequest request =
                    new TransferUtilityUploadDirectoryRequest
                    {
                        BucketName = existingBucketName,
                        Directory = directoryPath,
                        SearchOption = SearchOption.AllDirectories,
                        SearchPattern = "*.txt"
                    };

                directoryTransferUtility.UploadDirectory(request);
                Console.WriteLine("Upload statement 3 completed");
            }

            catch (AmazonS3Exception e)
            {
                Console.WriteLine(e.Message, e.InnerException);
            }
        }
    }
}