首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多目标删除

多目标删除
EN

Stack Overflow用户
提问于 2016-03-01 15:05:04
回答 1查看 2.3K关注 0票数 1

我正在尝试删除多个对象,但它不会删除。我没有得到任何的exception.If我去单一删除,这是没有问题的。

下面是我正在使用的代码

代码语言:javascript
复制
public void deleteImage(){
        List<KeyVersion> amazonKeys = new ArrayList<KeyVersion>();
        amazonKeys.add(new KeyVersion("compressedc1eac77b-9c38-4036-9770-34a77a163bb0.jpeg"));
        amazonKeys.add(new KeyVersion("compressedb52adf1e-5155-48b6-9051-bb679601f5ee.jpeg"));
        imageService.removeS3Files("mubucketname/dev/3123",amazonKeys);
    }

我的服务是

代码语言:javascript
复制
public void removeS3Files(String bucketName,List<KeyVersion> keys){

        log.debug("deleting multiple objects from s3 with bucket::" + bucketName);
        try{
            DeleteObjectsRequest multiObjectDeleteRequest = new DeleteObjectsRequest(bucketName);
            multiObjectDeleteRequest.setKeys(keys);
            AmazonS3 s3client = new AmazonS3Client(CustomAwsCredentials.getInstance(envConfiguration));
            s3client.setEndpoint(Constant.AWS_ENDPOINT);
            DeleteObjectsResult deleteObjectsResult = s3client.deleteObjects(multiObjectDeleteRequest);
            System.out.println(deleteObjectsResult.getDeletedObjects());
        }catch(AmazonServiceException exception){
            log.debug("Caught an AmazonServiceException.");
            log.debug("Error Message:    " + exception.getMessage());
        }catch (AmazonClientException clientException) {
            log.debug("Caught an AmazonClientException.");
            log.debug("Error Message:    " + clientException.getMessage());
        }
    }

我在桶中的数据存储看起来像

代码语言:javascript
复制
bucketname/dev/3123/compressedc1eac77b-9c38-4036-9770-34a77a163bb0.jpeg
bucketname/dev/3123/compressedb52adf1e-5155-48b6-9051-bb679601f5ee.jpeg

我使用了以下代码来删除单个对象(工作正常)

代码语言:javascript
复制
try{
            AmazonS3 s3client = new AmazonS3Client(CustomAwsCredentials.getInstance(envConfiguration));
            System.out.println(s3client.doesBucketExist(bucketName));
            s3client.setEndpoint(Constant.AWS_ENDPOINT);
            s3client.deleteObject(bucketName, key);
        }catch(AmazonServiceException exception){
            log.debug("Caught an AmazonServiceException.");
            log.debug("Error Message:    " + exception.getMessage());
        }catch (AmazonClientException clientException) {
            log.debug("Caught an AmazonClientException.");
            log.debug("Error Message:    " + clientException.getMessage());
        }

请帮我在这里删除多个对象所缺少的东西?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-01 17:58:17

这不是一个有效的桶名:

代码语言:javascript
复制
mubucketname/dev/3123

桶名与键是分开的,您不能将键中的路径前缀放在桶名上。试试这个:

代码语言:javascript
复制
List<KeyVersion> keys = new ArrayList<KeyVersion>();
keys.add(new KeyVersion("dev/3123/compressedc1eac77b-9c38-4036-9770-34a77a163bb0.jpeg"));
keys.add(new KeyVersion("dev/3123/compressedb52adf1e-5155-48b6-9051-bb679601f5ee.jpeg"));
DeleteObjectsRequest request = new DeleteObjectsRequest("mubucketname").withKeys(keys);
DeleteObjectsResult result = s3client.deleteObjects(request);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35726349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档