1,首先在 pom.xml 中加入maven依赖
<!-- 阿里云oss -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
2,在 application.yml 中配置 oss 的相关属性
aliyun:
oss:
endpoint : "https://oss-cn-beijing.aliyuncs.com"
accessKeyId : "你的。。。"
accessKeySecret : "你的。。。"
bucketName : "你的。。。"
3,将 oss 的属性注入到实体类 OssInstance.java , 方便之后的同一调用
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@Data
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssInstance {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
4,编写 oss 的功能接口 OssService.java
import java.io.File;
public interface OssService {
//如果OSS文件存在,则上传的数据会覆盖该文件的内容;如果OSS文件不存在,则会新建该文件。
//如果修改文件,则传入之前的包含文件后缀的路径即可
/**
* 阿里云oss文件上传公共方法 (选择单个上传,上传完之后即可返回上传的地址)
* @param file 上传的文件对象
* @param filePath 上传到oss的文件地址。包括文件的后缀
* @return 上传后存储在oss上的路径。 便于之后的访问和删除
*/
String upload(File file, String filePath);
/**
* 阿里云oss文件删除
* @param filepath
* @return
*/
public String delete(String filepath);
}
5, 实现 oss 功能的接口
import cn.hutool.core.io.FileUtil;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.example.demo.service.OssService;
import com.example.demo.utils.OssInstance;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.InputStream;
@Service
public class OssServiceImpl implements OssService {
@Autowired
private OssInstance ossInstance;
@Override
public String upload(File file, String filePath) {
String endpoint = ossInstance.getEndpoint();
String accessKeyId = ossInstance.getAccessKeyId();
String accessKeySecret = ossInstance.getAccessKeySecret();
String bucketName = ossInstance.getBucketName();
// 文件流
InputStream inputStream = FileUtil.getInputStream(file);
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 创建PutObject请求。
ossClient.putObject(bucketName, filePath, inputStream);
} catch (Exception e) {
System.out.println(e.getMessage());
return "上传失败";
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return filePath;
}
@Override
public String delete(String filepath) {
String endpoint = ossInstance.getEndpoint();
String accessKeyId = ossInstance.getAccessKeyId();
String accessKeySecret = ossInstance.getAccessKeySecret();
String bucketName = ossInstance.getBucketName();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 删除文件。
ossClient.deleteObject(bucketName, filepath);
} catch (Exception e) {
System.out.println(e.getMessage());
return "删除失败";
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return "删除成功";
}
}
结束 ,自己写个Controller 直接调用 , 或者在其他需要使用到oss的服务直接注入 OssService 调用就可以 。