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

本文关键字:存储 复制 另一个 一个 文件 | 更新日期: 2023-09-27 18:36:39

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

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);
                }

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

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

我认为您可以使用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)
            {
            }

        }