使用java开发流程
1.maven项目在pom.xml中配置依赖包
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java-bundle</artifactId>
<version>3.23.9.1</version>
</dependency>
<!--若您的项目对三方依赖占用空间大小较为敏感,可使用下方代码引用普通版 SDK。具体差别见说明-->
<!--<dependency>-->
<!-- <groupId>com.huaweicloud</groupId>-->
<!-- <artifactId>esdk-obs-java</artifactId>-->
<!-- <version>3.23.9.1</version>-->
<!--</dependency>-->
具体版本号可以去官网查询https://support.huaweicloud.com/intl/zh-cn/sdk-java-devg-obs/obs_21_0105.html
如果不是maven项目,可以直接去下载sdk
https://support.huaweicloud.com/intl/zh-cn/sdk-java-devg-obs/obs_21_0001.html
1.前期准备需要去华为云注册账号获取相关的key ,桶名称等信息。
2.简单的上传功能
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.Map.Entry;
/**
* 上传接口
* oss上传
*/
public class ObsOperationUtils {
private static final Logger logger = LogManager.getLogger(ObsOperationUtils.class);
private static final String endpoint="endpoint";
private static final String accessKeyId="accessKeyId";
private static final String accessKeySecret="accessKeySecret";
private static final String bucketName="bucketName";
private static ObsUtils obs;
public static ObsUtils getInstance() {
if (obs == null) {
obs = new ObsUtils();
}
return obs;
}
public static void main(String[] args)throws IOException {
ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endpoint);
File file = new File("C:\\Users\\Downloads\\20210506_182509.jpg");
PutObjectRequest request = new PutObjectRequest(bucketName, "test", file);
try {
PutObjectResult result = obsClient.putObject(request);
System.out.println("Upload successful! ETag: " + result.getEtag());
} catch (ObsException e) {
System.out.println("Error uploading file: " + e.getErrorCode() + " - " + e.getErrorMessage());
} finally {
obsClient.close();
}
}
/**
* 上传文件
*
* @param file 文件
* @param fileName 文件存储名称
* @return
*/
public static PutObjectResult uploadFile(MultipartFile file, String fileName)
throws IOException {
// 初始化OBSClient
ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endpoint);
InputStream inputStream = file.getInputStream();
//根据命名规范 自定义名称
String objectKey= fileName;
PutObjectRequest request =new PutObjectRequest(bucketName, objectKey, inputStream);
try {
PutObjectResult result = obsClient.putObject(request);
return result;
} catch (ObsException e) {
logger.error("Error uploading file: " + e.getErrorCode() + " - " + e.getErrorMessage());
} finally {
obsClient.close();
}
return null;
}
}
下载功能 转换为二进制流
/**
*
*文件下载转换为二进制流
* @param url
* @return
*/
public static byte[] downloadToFile(String url){
byte[] base64Str1=null;
//截取文件名称
String objectName = url.substring(url.lastIndexOf("/")+1);
// 创建OBSClient实例。
ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endpoint);
ObsObject obsObject = obsClient.getObject(bucketName, objectName);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
try {
InputStream inStream = obsObject.getObjectContent();
byte[] buffer = new byte[1024];
int len = -1;
while((len = inStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
base64Str1= outStream.toByteArray();//变成了二进制数组
} catch (IOException ex) {
ex.printStackTrace();
}
return base64Str1;
}
OBS不存在文件夹的概念,只有桶的概念 命名方式可参考开发文档
https://support.huaweicloud.com/intl/zh-cn/ugobs-obs/obs_41_0015.html
下载客户端OBS Browser+ 可以查看存储的文件
获取的url地址转为中文
URLDecoder.decode(result.getObjectUrl(), "UTF-8");