腾讯云对象存储以及项目业务头像上传

腾讯云上传步骤:

service-vod模块化中

①、参考文档,引入依赖

②、配置文件application.properties

③、创建工具类

  • 初始化bean的时候读取配置文件
java 复制代码
@Component
public class ConstantPropertiesUtil implements InitializingBean{
	
	@Value("${tencent.cos.file.region}")
	private String region;

	@Value("${tencent.cos.file.secretid}")
	private String secretId;

	@Value("${tencent.cos.file.secretKey}")
	private String secretKey;

	@Value("${tencent.cos.file.bucketname}")
	private String bucketName;

	//对上述私有变量进行公有化访问
	private static String END_POINT;
	private static String ACCESS_KEY_ID;
	private static String ACCESS_KEY_SECRET;
	private static String BUCKET_NAME;
	
	@Override
	public void afterPropertiesSet()throws Exception{
		 END_POINT = region;
		 ACCESS_KEY_ID = secretId;
		 ACCESS_KEY_SECRET = secretKey;
		 BUCKET_NAME = bucketName;
	}
}

③、业务

java 复制代码
@Api(tags = "文件上传接口")
@RestController
@RequestMapping("/admin/vod/file")
@CrossOrigin
public class FileUploadController{
	
	@Autowired
	private FileService fileService;

	@ApiOperation("文件上传")
	@PostMapping("upload")
	public Result uploadFile(MultipartFile file){
	
		String url = fileService.upload(file);
		return Result.ok(url).message("上传文件成功");
	}
}
java 复制代码
@Service
public class FileServiceImpl implements FileService{
	
	@Override
	public String upload(MultipartFile file){
		
		//初始化用户身份信息
		String secretId = ConstantPropertiesUilt.ACCESS_KEY_ID;
		String secretKey = ConstantPropertiesUtil.ACCESS_KEY_SECRET;

		COSCredentials cred = new BasicCOSCredentials(secretId,secretKey);
		
		//设置bucket的地域
		Region region = new Region(ConstantPropertiesUtil.END_POINT);
		ClientConfig clientConfig = new ClientConfig(region);

		//这里建议设置使用https协议
		clientConfig.setHttpProtocol(HttpProtocol.https);

		//生成cos客户端
		COSClient cosClient = new COSClient(cred,clientConfig);

		//存储桶的命名格式为BuCKETnAME-APPID,此处填写的存储桶名称必需为此格式
		String bucketName = ConstantPropertiesUtil.BUCKET_NAME;
		//UUID+文件名,保证上传的文件唯一
		String key = UUID.randomUUID().toString().replaceAll("-","")+file.getOriginalFilename();

		//对上传文件分组,根据当前日期
		String dateTime = new DataTime.toString("yyyy/MM/dd");
		key = dateTime+"/"+key;
		try{
			//获取上传文件输入流
			InputStream inputStream = file.getInputtream();
			ObjectMetaData objectMetadata = new ObjectMetadata();

			PutObjectRequest putObjectRequest = new PutObjectRequest(
				bucketName,
				key,
				inputStream,
				objectMetadata
			);

			PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
			
			String url = "https://" +bucketName+"."+"cos"+ConstantProperte.END_POINT+".myqcloud.com"+"/"+key;
			return url;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
}
相关推荐
yunlaodacom16 小时前
腾讯云国际版代理商:COS标准、低频、归档和深度归档怎么选?存储成本与数据取回区别
数据库·云计算·腾讯云
CubeSandbox16 小时前
Cube Sandbox 受邀亮相 Arm Create:腾讯云工程师将在“云 + AI”专场带来开场演讲
arm开发·腾讯云·cube sandbox
行业研究员3 天前
腾讯云数据库 PostgreSQL 让相关子查询跑上多核
数据库·postgresql·腾讯云
2601_962295333 天前
腾讯云宣布上新CloudBase AI CLI:可减少80%编码量
腾讯云·cloudbaseaicli·aicli工具·减少编码量·serverless服务
腾讯云大数据4 天前
腾讯云AI Native数据平台功能发布合集【8月】
大数据·人工智能·云计算·腾讯云
2501_930472445 天前
05_数据库迁移腾讯云_DTS评估与预检回滚清单
数据库·云计算·腾讯云
行者-全栈开发5 天前
WorkBuddy 实战:一次 P0 故障复盘,3 小时压缩到 40 分钟
腾讯云·aiops·故障复盘·workbuddy·agent 办公·复盘报告·值班记录
2501_930472446 天前
03_AWS迁移腾讯云_组件差异风险清单与工作量WBS
云计算·腾讯云·aws
云贝贝贝6 天前
腾讯云 TDSQL(MySQL 版)运维高频 6 坑:代理路由、读写分离、分片键、监控、PITR
运维·mysql·腾讯云
DisonTangor6 天前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手