Java实现阿里云oss删除文件以及oss报错Nosuchkey

阿里云oss文件删除,阿里云给的文档:

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName =     "<yourObjectName>";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 删除文件。
ossClient.deleteObject(bucketName, objectName);

// 关闭OSSClient。
ossClient.shutdown();
			

根据阿里云写的文档是有问题的,总是报:Nosuchkey。说名你的文件url不对,看一下我的代码:

public Rest del(String yourObjectName) {
        Rest rest = null;
        try {
            // Endpoint
            String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
            // keyId
            String accessKeyId = "<yourAccessKeyId>";
            // KeySecret
            String accessKeySecret = "<yourAccessKeySecret>";
            // 第一个文件夹
            String bucketName = "<yourBucketName>";
            /*
             * yourObjectName: 传过来的文件url
             * 列如: http://8080/a/b/c/297964290899854.html
             * 你应该截取得到后面的路径: a/b/c/297964290899854.html
             */
            yourObjectName = "<yourObjectName>";

            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 判断当前文件url 是否存在
            boolean exist = ossClient.doesObjectExist(bucketName, yourObjectName);
            if (!exist) {
                log.error("文件不存在,filePath:{},{}", yourObjectName, ossClient.doesObjectExist(bucketName, yourObjectName));
                rest = Rest.failure("文件不存在,已删除该信息。");
                return rest;
            } else {
                // 删除文件。
                ossClient.deleteObject(bucketName, yourObjectName);
                // 关闭OSSClient。
                ossClient.shutdown();
                rest = Rest.ok();
            }
        } catch (Exception e) {
            log.info("异常信息!标识符: ossDelete");
            e.printStackTrace();
            rest = Rest.failure("异常信息!标识符: ossDelete");
        }
        return rest;
    }

总结:Java实现oss删除需要获取删除文件的路径,文档提示的yourObjectName就是你的文件路径  用String.substring("开始的位置")进行截取,截取 "http://oss-cn-hangzhou.aliyuncs.com"/之后的文件url进行删除。否则报错:Nosuchkey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值