百度云BOS上传文件并返回文件地址

3 篇文章 0 订阅
1 篇文章 0 订阅

目录

依赖添加

简单上传


依赖添加

在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作为文件标识。 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值