1、登录aliyun
1.1、什么是OSS?有什么用?
OSS 是“Object Storage Service”的缩写,中文常称为“对象存储服务”。OSS 是一种互联网云存储服务,主要用于海量数据的存储与管理。
相较于nginx,OSS更灵活,不用将文件存储于本地磁盘或服务器中,并且可以实现文件共享,它通过简单的RESTful接口提供高可用、高可靠、安全、低成本的数据存储能力,支持多种数据的存储需求,如图片、视频、音频文件以及各类文档等,在当今市场上应用广泛。
1.2、进入阿里云网站
2、开通OSS
2.1 点击”免费试用“
2.2 立即试用
2.4、提交成功
3、创建存储空间
3.1新建Bucket
3.2 进入Bucket并创建文件夹
"Bucket"是一个核心概念,Bucket 可以被形象地理解为一个容器或目录,用于存储和组织文件或对象。
3.3进入Bucket后查看概览,记录下图信息
4、查询accessKeyId和accessKeySecret。
4.1 点击确认
4.2点击继续使用AccessKey
4.3 创建AccessKey
4.4 安全验证
4.5 获取AccessKeyId和AccessKeySecret
5 代码操作
5.1 设置配置信息
# properties文件格式
aliyun.oss.bucketName = Bucket名字
aliyun.oss.endpoint = 自己的域名节点
aliyun.oss.accessKeyId = 自己的accessKeyId
aliyun.oss.accessKeySecret = 自己的accessKeySecret#yml文件格式
#aliyun:
# oss:
# bucketName:
# endpoint:
# accessKeyId:
# accessKeySecret:
5.2 引入依赖
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.6.0</version>
</dependency>
5.3 创建工具类AliOssUtil
AliOssUtil是一个用于封装阿里云对象存储服务(OSS)操作的工具类。这个工具类可以帮助你更简单地执行常见的OSS操作,如上传文件、下载文件、删除文件、列出bucket中的对象等。
package com.beiyou.Util;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;import java.io.File;
import java.net.URL;
import java.util.Date;public class AliOssUtil {private static final String ENDPOINT = ""; // 更改为你的Endpointprivate static final String ACCESS_KEY_ID = ""; // 更改为你的Access Key IDprivate static final String ACCESS_KEY_SECRET = ""; // 更改为你的Access Key Secretprivate static final String BUCKET_NAME = ""; // 更改为你的Bucket名称private static OSS ossClient;// 初始化OSS客户端public static void init() {ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);}// 上传文件到OSSpublic static void uploadFile(String objectName, File file) {ossClient.putObject(new PutObjectRequest(BUCKET_NAME, objectName, file));}// 删除OSS上的文件public static void deleteFile(String objectName) {ossClient.deleteObject(BUCKET_NAME, objectName);}// 获取文件URLpublic static URL getUrl(String objectName, int expires) {// 设置URL过期时间为expires秒后Date expiration = new Date(System.currentTimeMillis() + expires * 1000L);return ossClient.generatePresignedUrl(BUCKET_NAME, objectName,expiration);}// 列出Bucket中的所有对象public static List<OSSObjectSummary> listAllObjects() {ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(BUCKET_NAME));List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();while (true) {// 如果有下一批,继续获取if (objectListing.isTruncated()) {objectListing = ossClient.listObjects(String.valueOf(objectListing));objectSummaries.addAll(objectListing.getObjectSummaries());} else {break;}}return objectSummaries;}// 关闭OSS客户端public static void shutdown() {ossClient.shutdown();}
}
5.4 测试
package com.beiyou;import com.beiyou.Util.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.File;
import java.net.URL;@Slf4j
@SpringBootTest
class Application {// 上传文件@Testvoid contextLoads() {AliOssUtil.init();// 上传文件File file = new File("C:\\Users\\ljj\\Downloads\\1.jpg");String name = file.getName();AliOssUtil.uploadFile(name, file);// 关闭OSS客户端AliOssUtil.shutdown();}// 删除文件@Testvoid deleteFile() {AliOssUtil.init();// 删除文件AliOssUtil.deleteFile("AccessKey.csv");// 关闭OSS客户端AliOssUtil.shutdown();}@Testvoid getUrl() {AliOssUtil.init();// 获取文件URLURL url = AliOssUtil.getUrl("1.jpg", 3600);// 3600 seconds = 1 hourif (url != null) {System.out.println("文件URL: " + url);} else {System.out.println("无法获取文件URL");}// 关闭OSS客户端AliOssUtil.shutdown();}@Testvoid listObjects() {AliOssUtil.init();// 列出所有文件List<OSSObjectSummary> summaries = AliOssUtil.listAllObjects();for (OSSObjectSummary summary : summaries) {System.out.println(" - " + summary.getKey() + " " +"(size = " + summary.getSize() + ")");}// 关闭OSS客户端AliOssUtil.shutdown();}}