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

腾讯云上传步骤:

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;
	}
}
相关推荐
XXX-X-XXJ15 小时前
腾讯云语音接口实现会议系统
云计算·腾讯云
杏花春雨江南20 小时前
腾讯云 CLB (Cloud Load Balancer) 为例,详细讲解如何配置 Nginx 集群
nginx·云计算·腾讯云
Techer_Y20 小时前
云安全服务(参考自腾讯云工程师认证课程)
网络·云计算·腾讯云
Craze_rd20 小时前
腾讯云TDSQL-C 与传统MySQL对比
mysql·云计算·腾讯云
Clownseven1 天前
CN2 GIA线路深度解析:阿里云/腾讯云选哪个?(附三网评测)
阿里云·云计算·腾讯云
杏花春雨江南1 天前
pringboot3.0 创建的javaweb 应用,部署在腾讯云上的整体步骤
云计算·腾讯云
g66x1 天前
自建prometheus监控腾讯云k8s集群
kubernetes·腾讯云·prometheus
懒人村杂货铺1 天前
[特殊字符] 跨端视频通话实战:腾讯云 TRTC + IM(React Native & Web)
react native·音视频·腾讯云
腾讯云大数据3 天前
IDC MarketScape:腾讯云位居国内生成式AI数据基础设施“领导者”象限
人工智能·云计算·腾讯云
LucianaiB3 天前
【混元AIGC+腾讯云智能体+首创Coze核心流思维导图MCP】:打造一个文思通-智能写作助手Agent
aigc·腾讯云·ai写作·mcp·腾讯混元大模型aigc