阿里云OSS删除文件详细步骤
一、阿里云oss服务开通
二、进入控制台
三、创建Bucket
四、创建AccessKey
云账号 AccessKey 是您访问阿里云 API 的密钥,具有账户的完全权限
请您务必妥善保管!
不要以任何方式公开 AccessKey 到外部渠道(例如 Github)
避免被他人利用造成 安全威胁。
强烈建议您遵循 阿里云安全最佳实践
使用 RAM 用户(而不是云账号)的 AccessKey 进行 API 调用。
创建成功后先复制粘贴到一边
五、上代码
1.导入依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
如果使用的是Java 9及以上的版本,则需要添加jaxb一下相关依赖。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
2.配置类application.yml
注意:folder为上传文件基目录,如果不配置,则自动在根目录创建文件夹
# 阿里云OSS
aliyun:
oss:
file:
endpoint: oss-cn-beijing.aliyuncs.com # 对应公网endpoint地址
accessKeyId: yourAccessKeyId
accessKeySecret: yourAccessKeySecret
bucketName: yourbucketName
folder: active #保存文件夹路径
3.创建一个读取配置的类
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource(value = "classpath:application.yml") //指定配置文件的位置
public class AliConfig implements InitializingBean {
/**
* 对应公网endpoint地址
*/
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
/**
* AccessKeyId
*/
@Value("${aliyun.oss.file.accessKeyId}")
private String accessKeyId;
/**
* AccessKeySecret
*/
@Value("${aliyun.oss.file.accessKeySecret}")
private String accessKeySecret;
/**
* Bucket名称
*/
@Value("${aliyun.oss.file.bucketName}")
private String bucketName;
/**
* 上传文件夹路径
*/
@Value("${aliyun.oss.file.folder}")
private String folder;
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
public static String FOLDER;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = accessKeyId;
ACCESS_KEY_SECRET = accessKeySecret;
BUCKET_NAME = bucketName;
FOLDER = folder;
}
}
4.业务代码
@RestController
@RequestMapping("/upload")
public class UploadController {
@PostMapping
public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) {
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = AliConfig.END_POINT;
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = AliConfig.ACCESS_KEY_ID;
String accessKeySecret = AliConfig.ACCESS_KEY_SECRET;
String bucketName = AliConfig.BUCKET_NAME;
String folder = AliConfig.FOLDER;
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = file.getInputStream();
//获取文件真实名称
String originalFilename = file.getOriginalFilename();
//重命名,防止相同文件出现覆盖
//生成的f4f2e1a3-391a-4d5a-9438-0c9f5d27708c 需要替换成 f4f2e1a3391a4d5a94380c9f5d27708c
String uuid = UUID.randomUUID().toString().replaceAll("-","");
//新的文件名
originalFilename = uuid + originalFilename;
//2、把文件按照日期进行分类
String datePath = new DateTime().toString("yyyy/MM/dd");
//拼接
originalFilename = folder + "/" + datePath + "/" + originalFilename;
// oss实现上传文件
ossClient.putObject(bucketName, originalFilename, inputStream);
// 关闭OSSClient
ossClient.shutdown();
//把上传之后文件路径返回,手动拼接出来
String url = "https://" + bucketName + "." + endpoint + "/" + originalFilename;
return url;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}