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 = ""; // 更改为你的Endpoint
private static final String ACCESS_KEY_ID = ""; // 更改为你的Access Key ID
private static final String ACCESS_KEY_SECRET = ""; // 更改为你的Access Key Secret
private 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);
}
// 上传文件到OSS
public 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);
}
// 获取文件URL
public 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 {
// 上传文件
@Test
void contextLoads() {
AliOssUtil.init();
// 上传文件
File file = new File("C:\\Users\\ljj\\Downloads\\1.jpg");
String name = file.getName();
AliOssUtil.uploadFile(name, file);
// 关闭OSS客户端
AliOssUtil.shutdown();
}
// 删除文件
@Test
void deleteFile() {
AliOssUtil.init();
// 删除文件
AliOssUtil.deleteFile("AccessKey.csv");
// 关闭OSS客户端
AliOssUtil.shutdown();
}
@Test
void getUrl() {
AliOssUtil.init();
// 获取文件URL
URL url = AliOssUtil.getUrl("1.jpg", 3600);// 3600 seconds = 1 hour
if (url != null) {
System.out.println("文件URL: " + url);
} else {
System.out.println("无法获取文件URL");
}
// 关闭OSS客户端
AliOssUtil.shutdown();
}
@Test
void listObjects() {
AliOssUtil.init();
// 列出所有文件
List<OSSObjectSummary> summaries = AliOssUtil.listAllObjects();
for (OSSObjectSummary summary : summaries) {
System.out.println(" - " + summary.getKey() + " " +
"(size = " + summary.getSize() + ")");
}
// 关闭OSS客户端
AliOssUtil.shutdown();
}
}