springboot快速集成阿里云的oss
1、pom.xml配置
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.0</version>
</dependency>
2、demo
package com.lzkj.rabbitmqdemo.utils;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Component
public class OssClientUtils {
@Value("${oss.client.endpoint}")
private String endpoint="https://oss-cn-beijing.aliyuncs.com";
@Value("${oss.client.access-key-id}")
private String accessKeyId="LTAI5tAdPe2cMf8vktXKqfEB";
@Value("${oss.client.access-key-secret}")
private String accessKeySecret="OtouRVoLC6e6tpzQOhTZ0CkCD1PdLy";
private static OSS ossClient;
private static String endpointStr="https://oss-cn-beijing.aliyuncs.com";
private static String accessKeyIdStr="LTAI5tAdPe2cMf8vktXKqfEB";
private static String accessKeySecretStr="OtouRVoLC6e6tpzQOhTZ0CkCD1PdLy";
@PostConstruct
private void init(){
endpointStr=endpoint;
accessKeyIdStr=accessKeyId;
accessKeySecretStr=accessKeySecret;
}
public static OSS getOssClient(){
ossClient = new OSSClientBuilder().build(endpointStr, accessKeyIdStr, accessKeySecretStr);
return ossClient;
}
/**
* 判断存储空间是否存在
*/
public static boolean checkBucketExist(String bucketName){
boolean exists=false;
try{
ossClient=getOssClient();
exists = ossClient.doesBucketExist(bucketName);
}catch (Exception e){
log.error("判断oss存储空间是否存在,出现异常:"+e.getMessage(),e);
}finally {
if (ossClient!=null){
ossClient.shutdown();
}
}
return exists;
}
/**
* 创建存储空间
*/
public static void createBucket(String bucketName){
try{
ossClient=getOssClient();
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
ossClient.createBucket(createBucketRequest);
}catch (Exception e){
log.error(e.getMessage(),e);
}finally {
if (ossClient!=null){
ossClient.shutdown();
}
}
}
/**
* 简单上传:包括流式上传肯文件上传。最大不能超过5GB
* 文件上传
* bucketName:example
* targetPath:ammeter/ammeter.log
* filePath:D:/work/ammeter.gz
*/
public static boolean putObject(String bucketName,String targetPath,String filePath){
OSS ossClient =null;
boolean putObj=false;
try{
ossClient=getOssClient();
PutObjectRequest request = new PutObjectRequest(bucketName, targetPath, new File(filePath));
PutObjectResult result = ossClient.putObject(request);
putObj=true;
}catch (Exception e){
log.error(e.getMessage(),e);
}finally {
if (ossClient!=null){
ossClient.shutdown();
}
}
return putObj;
}
/**
* 分片上传文件(文件大小超过5G)
*/
public static void multipartUploadFile(String bucketName,String targetPath,String filePath) {
FileInputStream inputStream =null;
try{
ossClient=getOssClient();
InitiateMultipartUploadRequest uploadRequest = new InitiateMultipartUploadRequest(bucketName, targetPath);
InitiateMultipartUploadResult multipartUploadResult = ossClient.initiateMultipartUpload(uploadRequest);
String uploadId = multipartUploadResult.getUploadId();
List<PartETag> partETags = new ArrayList<>();
final long partSize=1*1024*1024L;
final File file = new File(filePath);
inputStream = new FileInputStream(file);
long length = file.length();
int partCount= (int) (length/partSize);
if (length%partSize!=0){
partCount++;
}
for(int i=0;i<partCount;i++){
long startPos=i*partSize;
long curPartSize=(i+1==partCount)?(length-startPos):partSize;
inputStream.skip(startPos);
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(bucketName);
uploadPartRequest.setKey(targetPath);
uploadPartRequest.setUploadId(uploadId);
uploadPartRequest.setInputStream(inputStream);
uploadPartRequest.setPartSize(curPartSize);
uploadPartRequest.setPartNumber(i+1);
UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
partETags.add(uploadPartResult.getPartETag());
}
CompleteMultipartUploadRequest multipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, targetPath, uploadId, partETags);
CompleteMultipartUploadResult completeMultipartUpload = ossClient.completeMultipartUpload(multipartUploadRequest);
log.info("分片上传成功"+completeMultipartUpload.getETag());
}catch (Exception e){
log.error("分片上传文件失败,原因:"+e.getMessage(),e);
}finally {
if (inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ossClient!=null){
ossClient.shutdown();
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)