阿里云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