8b012af3f70f35aaeb8b7f50881f9324_MD5.png

引入工具类 AliyunOSSOperator
package utils;
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
@Component
public class AliyunOSSOperator {
private String endpoint = "<https://oss-cn-beijing.aliyuncs.com>";
private String bucketName = "java-ai";
private String region = "cn-beijing";
public String upload(byte[] content, String originalFilename) throws Exception {
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 填写Object完整路径,例如202406/1.png。Object完整路径中不能包含Bucket名称。
//获取当前系统日期的字符串,格式为 yyyy/MM
String dir = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM"));
//生成一个新的不重复的文件名
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
String objectName = dir + "/" + newFileName;
// 创建OSSClient实例。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content));
} finally {
ossClient.shutdown();
}
return endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + objectName;
}
}
其中,文件的访问路径是返回值,它是这么组装的:
734a671a1aa31379d67e273aedc6623d_MD5.png

另外,我们仔细读一读工具类的代码,可以看到,它实际上发给阿里云的是一个以时间命名的路径.这样的话,阿里云会根据我们传的路径生成一个文件夹,文件夹里存放图片(如2025/6/1.png) 在事实上,我们在浏览器点击上传并传递图片之后,会自动帮我们向后端发送调用请求.
c0d683489b9bd7562fe1b117ca35a5fc_MD5.png

在这之后,我们点击新增员工后,实际上发送的是图片的url.
aff928b3e270e9d820e302fde88242c6_MD5.png

自然,我们需要使用这些配置文件当中. 我们一般放在application.yml当中.
5e051a2bd09aff7d4c51f867da51f09e_MD5.png

注意,value属性是spring当中的,不是lombok当中的.