目录
依赖添加
在Maven的pom.xml文件中添加bce-java-sdk的依赖:
<!-- Bos -->
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>bce-java-sdk</artifactId>
<version>{version}</version>
</dependency>
其中,{version}
为版本号,可以SDK下载页面找到。
简单上传
BOS在简单上传的场景中,支持以指定文件形式、以数据流方式、以二进制串方式、以字符串方式执行Object上传,请参考如下代码,或简单上传Demo。
package org.springblade.modules.resource.builder.oss;
import com.baidubce.auth.DefaultBceCredentials;
import com.baidubce.services.bos.BosClient;
import com.baidubce.services.bos.BosClientConfiguration;
import com.baidubce.services.bos.model.PutObjectResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Bos百度云存储
*/
public class BosBuilder {
/**
* 简单上传file
* @param file
* @return fileUrl
* @throws IOException
*/
public static String putObjectSimple(MultipartFile file) throws IOException {
String ACCESS_KEY_ID = "akxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 用户的Access Key ID
String SECRET_ACCESS_KEY = "skxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 用户的Secret Access Key
String ENDPOINT = "bj.bcebos.com"; // 用户自己指定的域名,参考说明文档
String BUCKETNAME= "bucketName"; // 用户BucketName名称
// 初始化一个BosClient
BosClientConfiguration config = new BosClientConfiguration();
config.setCredentials(new DefaultBceCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY));
config.setEndpoint(ENDPOINT);
BosClient client = new BosClient(config);
//获取文件名后缀
String fileName = file.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
//随机文件ID
String fileId = getFileIdByTime();
// 以文件形式上传Object
PutObjectResponse putObjectFromFileResponse =
client.putObject(BUCKETNAME, fileId + suffix, file.getBytes());
//返回文件地址
String fileUrl = "https://" + BUCKETNAME + "." + ENDPOINT + "/" + fileId + suffix;
// 打印ETag
System.out.println(putObjectFromFileResponse.getETag());
// 关闭客户端
client.shutdown();
return fileUrl;
}
/**
* 生成文件ID
* @return fileId
*/
private static String getFileIdByTime() {
//生成当前时间戳的ID
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String newDate = sdf.format(new Date());
//生成5位随机数
int randomNum = (int) ((Math.random() * 9 + 1) * 10000);
String result = String.valueOf(randomNum);
String fileId= newDate + result;
return fileId;
}
}
Object以文件的形式上传到BOS中,PutObject函数支持不超过5GB的Object上传。在PutObject请求处理成功后,BOS会在Header中返回Object的ETag作为文件标识。