package com.hx.util;
|
|
import com.obs.services.ObsClient;
|
import com.obs.services.exception.ObsException;
|
import com.obs.services.model.HeaderResponse;
|
import com.obs.services.model.ObsBucket;
|
import com.obs.services.model.PutObjectResult;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.UUID;
|
|
/**华为云 OBS(OSS)
|
* @author ChenJiaHe
|
* @date 2021-05-06
|
*/
|
public class OBSUtil {
|
|
//log4j日志
|
private static Logger logger = LoggerFactory.getLogger(OBSUtil.class.getName());
|
|
/** 后端调用上传图片
|
* @param localFile 图片文件
|
* @param ak 访问秘钥
|
* @param sk 访问秘钥
|
* @param endPoint 区域
|
* @param bucketName 存储桶
|
* @param fileName 文件名称(带后缀),为空时自动生成
|
* @return
|
* @throws IOException
|
*/
|
public static PutObjectResult uploadImg(MultipartFile localFile,String ak,String sk,String endPoint,String bucketName,String folderName,String fileName) throws IOException {
|
|
//没有名次的时候自动生成
|
if(StringUtils.isNull(fileName)){
|
fileName = UUID.randomUUID().toString();
|
if (localFile.getOriginalFilename().lastIndexOf(".") >= 0){
|
fileName += localFile.getOriginalFilename().substring(localFile.getOriginalFilename().lastIndexOf("."));
|
}
|
}
|
if(StringUtils.noNull(folderName)){
|
fileName = folderName+"/"+fileName;
|
}
|
|
PutObjectResult putObjectResult = null;
|
|
//初始化OBS客户端
|
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
|
try{
|
putObjectResult = obsClient.putObject(bucketName,fileName , localFile.getInputStream());
|
}catch (ObsException e){
|
logger.error("华为云 OBS 上传文件报错 ");
|
logger.error("HTTP Code: " + e.getResponseCode());
|
logger.error("Error Code:" + e.getErrorCode());
|
logger.error("Error Message: " + e.getErrorMessage());
|
|
logger.error("Request ID:" + e.getErrorRequestId());
|
logger.error("Host ID:" + e.getErrorHostId());
|
e.printStackTrace();
|
}finally {
|
if(obsClient != null){
|
obsClient.close();
|
}
|
}
|
|
return putObjectResult;
|
}
|
|
|
/** 后端调用上传图片
|
* @param localFile 存储文件
|
* @param ak 访问秘钥
|
* @param sk 访问秘钥
|
* @param endPoint 区域
|
* @param bucketName 存储桶
|
* @param folderName 文件夹名称
|
* @param fileName 文件名称(带后缀),为空时自动生成
|
* @return
|
* @throws IOException
|
*/
|
public static PutObjectResult uploadImg(File localFile,String ak,String sk,String endPoint,String bucketName,String folderName,String fileName) throws IOException {
|
|
//没有名次的时候自动生成
|
if(StringUtils.isNull(fileName)){
|
fileName = UUID.randomUUID().toString();
|
if (localFile.getName().lastIndexOf(".") >= 0){
|
fileName += localFile.getName().substring(localFile.getName().lastIndexOf("."));
|
}
|
}
|
if(StringUtils.noNull(folderName)){
|
fileName = folderName+"/"+fileName;
|
}
|
|
PutObjectResult putObjectResult = null;
|
|
//初始化OBS客户端
|
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
|
try{
|
putObjectResult = obsClient.putObject(bucketName, fileName, localFile);
|
}catch (ObsException e){
|
logger.error("华为云 OBS 上传文件报错 ");
|
logger.error("HTTP Code: " + e.getResponseCode());
|
logger.error("Error Code:" + e.getErrorCode());
|
logger.error("Error Message: " + e.getErrorMessage());
|
|
logger.error("Request ID:" + e.getErrorRequestId());
|
logger.error("Host ID:" + e.getErrorHostId());
|
e.printStackTrace();
|
}finally {
|
if(obsClient != null){
|
obsClient.close();
|
}
|
}
|
return putObjectResult;
|
|
}
|
|
/** 创建桶
|
* @param ak 访问秘钥
|
* @param sk 访问秘钥
|
* @param endPoint 区域
|
* @param bucketName 存储桶
|
* @return
|
* @throws IOException
|
*/
|
public static HeaderResponse createBucket(String ak,String sk,String endPoint,String bucketName) throws IOException {
|
|
HeaderResponse response = null;
|
|
//初始化OBS客户端
|
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
|
try{
|
response = obsClient.createBucket(bucketName);
|
}catch (ObsException e){
|
|
logger.error("华为云 OBS 创建桶报错 ");
|
logger.error("HTTP Code: " + e.getResponseCode());
|
logger.error("Error Code:" + e.getErrorCode());
|
logger.error("Error Message: " + e.getErrorMessage());
|
|
logger.error("Request ID:" + e.getErrorRequestId());
|
logger.error("Host ID:" + e.getErrorHostId());
|
e.printStackTrace();
|
}finally {
|
if(obsClient != null){
|
obsClient.close();
|
}
|
}
|
return response;
|
}
|
|
|
}
|