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

腾讯云上传步骤:

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;
	}
}
相关推荐
屋外雨大,惊蛰出没1 天前
如何在spring boot项目中利用腾讯云上传存储文件
云计算·腾讯云
Ydwlcloud2 天前
2025年腾讯云支付宝充值教程:步骤详解与支付渠道新思路
服务器·人工智能·云计算·腾讯云
清蒸鳜鱼2 天前
腾讯云域名配置HTTPS完整指南:从0到1部署Flask应用
https·flask·腾讯云
TG:@yunlaoda360 云老大3 天前
如何了解腾讯云国际站代理商CSS的服务流程是怎样的?
css·云计算·腾讯云
故乡de云3 天前
腾讯云国内信用卡/银联卡注册教程
腾讯云
华仔-_-3 天前
腾讯云centos+gitee 前端自动化部署
gitee·centos·腾讯云
TG:@yunlaoda360 云老大3 天前
腾讯云国际站代理商 CSS有什么优势呢?
css·云计算·腾讯云
TG:@yunlaoda360 云老大4 天前
如何了解腾讯云国际站代理商FL有什么跨境优势呢?
网络·云计算·腾讯云
gaize12134 天前
腾讯云锐驰和蜂驰的区别
服务器·腾讯云
TG:@yunlaoda360 云老大4 天前
腾讯云国际站代理商TACO Kit有什么优势呢?
学习·云计算·腾讯云