将多个文件从一个存储桶复制到另一个存储桶

时间:2013-10-22 22:17:17

标签: c# amazon-s3

在一个请求中,我希望能够将特定于一个存储桶的多个文件复制到另一个存储桶。我有单个文件的标准代码,我必须迭代并导致多个请求才能复制多个文件。有没有办法提供我想要从一个存储桶复制到另一个存储桶的文件列表,并且只在一个请求中执行此操作?这就是我现在的代码:

for(int x=0; x < test.length; x++){
CopyObjectRequest request = new CopyObjectRequest();
                request.SourceBucket = tempBucket;
                request.SourceKey = imagekeys[x];
                request.DestinationBucket = stagingBucket;
                request.DestinationKey = imageUrl_Large_key;
                request.CannedACL = S3CannedACL.PublicRead;

                    S3Response response = client.CopyObject(request);
                }

2 个答案:

答案 0 :(得分:0)

由于存储桶的工作方式,我很确定无法将批量复制作为单个请求的一部分。

答案 1 :(得分:0)

我认为您可以使用S3DirectoryInfo类和CopyTo方法在存储桶之间复制文件夹密钥。 但它会为每个文件执行一个请求以移动到目标存储桶,虽然这是更优雅的方式。例如我使用AWSSDK 3.1.6 #C .net 3.5:

        public static void MoveFiles()
        {
            BasicAWSCredentials basicCredentials = new BasicAWSCredentials("your access key", "your secret key");
            AmazonS3Config configurationClient = new AmazonS3Config();
            configurationClient.RegionEndpoint = RegionEndpoint.EUCentral1;
            try
            {
                using (AmazonS3Client clientConnection = new AmazonS3Client(basicCredentials, configurationClient))
                {
                    S3DirectoryInfo source = new S3DirectoryInfo(clientConnection, "sourcebucketname", "sourcefolderkey");
                    S3DirectoryInfo target = new S3DirectoryInfo(clientConnection, "targetbucketname", "destinationbucketname");
                    source.CopyTo(target);

                }
            }
            catch(Exception ex)
            {

            }



        }
相关问题