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

腾讯云上传步骤:

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;
	}
}
相关推荐
Tom Ma.2 天前
使用腾讯云云开发(CloudBase)的云函数,删除云存储中指定目录下的过期文件
前端·javascript·腾讯云
2401_865854889 天前
腾讯云的游戏盾怎么样
游戏·云计算·腾讯云
真的想不出名儿10 天前
上传头像到腾讯云对象存储-前端基于antdv
java·数据库·腾讯云
沐欣工作室_lvyiyi12 天前
基于腾讯云的物联网导盲助手设计与实现(论文+源码)
单片机·物联网·云计算·毕业设计·腾讯云·导盲杖
黑金IT13 天前
本地 Docker 镜像送上云:腾讯云无服务器与容器化全栈迁移实战
docker·serverless·腾讯云
彭泽布衣13 天前
腾讯云网络vpc之arping返回MAC一样问题
网络·腾讯云·vpc
vortex514 天前
解决 Kali 中 Firefox 下载语言包和插件速度慢的问题:配置国内镜像加速
前端·firefox·腾讯云
uesowys18 天前
腾讯云微服务平台TSF
微服务·腾讯云
Pan Zonghui19 天前
腾讯云COS通过CDN加速配置指南
网络·云计算·腾讯云