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();
}
}
}


}

posted on 2022-06-30 17:42  程序狗狗  阅读(422)  评论(0编辑  收藏  举报

导航