如何使用iOS SDK将AWS S3文件从一个bucket复制到另一个bucket

如何使用iOS SDK将AWS S3文件从一个bucket复制到另一个bucket,ios,amazon-web-services,amazon-s3,Ios,Amazon Web Services,Amazon S3,我使用的是AWS iOS SDK,能够完成教程中概述的上传/下载文件操作。现在我正试图从一个bucket复制一个文件并粘贴到另一个bucket中。我拥有这两个水桶,可以使用它们。我还想在复制文件后从第一个bucket中删除该文件(从技术上讲,这是一个剪切粘贴操作),但我假设这样做的方式是复制、粘贴、删除原始文件 经过一些挖掘之后,似乎可以通过AWSS3-uploadPartCopy:函数来实现这一点。该函数似乎使用了一个AWSS3UploadPartCopyRquest对象,该对象有3个相关的输

我使用的是AWS iOS SDK,能够完成教程中概述的上传/下载文件操作。现在我正试图从一个bucket复制一个文件并粘贴到另一个bucket中。我拥有这两个水桶,可以使用它们。我还想在复制文件后从第一个bucket中删除该文件(从技术上讲,这是一个剪切粘贴操作),但我假设这样做的方式是复制、粘贴、删除原始文件

经过一些挖掘之后,似乎可以通过AWSS3-uploadPartCopy:函数来实现这一点。该函数似乎使用了一个AWSS3UploadPartCopyRquest对象,该对象有3个相关的输入属性,即目标bucket(bucket)、目标键(key)和源位置(replicateSource),这似乎是要复制的对象位置的URL

在我看来,对于这样一个函数来说,这似乎是一种非常奇怪的格式,我也不熟悉上传一个部件的含义,即,这是否必须是多部件上传的一部分?调用uploadPartCopy之前是否需要启动多部分上载


我也不确定这是不是解决这个问题的方法。对于一项相对简单的任务来说,这似乎是一个过于复杂的解决方案。我在这里走对了吗?

复制对象有两种操作:和。如果对象不是太大,则映射到的“PUT object-Copy”更容易实现


此外,Amazon S3还具有此功能,如果您的两个bucket不在同一区域,它会自动复制对象。

复制对象有两种操作:和。如果对象不是太大,则映射到的“PUT object-Copy”更容易实现


另外,AmazonS3还有一个功能,如果您的两个bucket不在同一个区域,它会自动复制对象。

请参阅下面的代码。它为您提供了将数据从一个bucket复制到另一个bucket的详细信息。在我的例子中,我想从同一个bucket复制多个图像

NSString *sourceBucket = @"treedev1234";

NSString *destinationBucket = @"treedev1234";

AWSS3 *s3 = [AWSS3 defaultS3];
AWSS3ReplicateObjectRequest *replicateRequest = [AWSS3ReplicateObjectRequest new];

for(int i = 0;i<feedModel.imageCount;i++){
    replicateRequest.bucket = destinationBucket;
    replicateRequest.key = [NSString stringWithFormat:@"posts/%d/%d.jpg",newpostid,i];
    replicateRequest.replicateSource = [NSString stringWithFormat:@"%@/posts/%d/%d.jpg",sourceBucket,oldpostid,i];
    replicateRequest.ACL = AWSS3ObjectCannedACLPublicReadWrite;

    [[s3 replicateObject:replicateRequest] continueWithBlock:^id(AWSTask *task) {
        if(task.error)
        NSLog(@"The  share request failed. error: [%@]", task.error);
        return nil;
    }];
NSString*sourceBucket=@“treedev1234”;
NSString*destinationBucket=@“treedev1234”;
AWSS3*s3=[AWSS3 defaultS3];
AWSS3ReplicateObjectRequest*replicateRequest=[AWSS3ReplicateObjectRequest new];

对于(int i=0;i只需参考下面的代码。它为您提供了将数据从一个bucket复制到另一个bucket的详细信息。在我的示例中,我希望从同一个bucket复制多个图像

NSString *sourceBucket = @"treedev1234";

NSString *destinationBucket = @"treedev1234";

AWSS3 *s3 = [AWSS3 defaultS3];
AWSS3ReplicateObjectRequest *replicateRequest = [AWSS3ReplicateObjectRequest new];

for(int i = 0;i<feedModel.imageCount;i++){
    replicateRequest.bucket = destinationBucket;
    replicateRequest.key = [NSString stringWithFormat:@"posts/%d/%d.jpg",newpostid,i];
    replicateRequest.replicateSource = [NSString stringWithFormat:@"%@/posts/%d/%d.jpg",sourceBucket,oldpostid,i];
    replicateRequest.ACL = AWSS3ObjectCannedACLPublicReadWrite;

    [[s3 replicateObject:replicateRequest] continueWithBlock:^id(AWSTask *task) {
        if(task.error)
        NSLog(@"The  share request failed. error: [%@]", task.error);
        return nil;
    }];
NSString*sourceBucket=@“treedev1234”;
NSString*destinationBucket=@“treedev1234”;
AWSS3*s3=[AWSS3 defaultS3];
AWSS3ReplicateObjectRequest*replicateRequest=[AWSS3ReplicateObjectRequest new];

对于(int i=0;我觉得我在这里遗漏了一些东西;您提供的链接解释了这些操作如何以其他语言工作。我正在尝试使用iOS SDK从iOS应用程序执行此操作。我觉得我在这里遗漏了一些东西;您提供的链接解释了这些操作如何以其他语言工作。我正在尝试执行此操作使用iOS SDK从iOS应用程序执行的操作。