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

腾讯云上传步骤:

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;
	}
}
相关推荐
国际云,接待13 小时前
云计算的基础概论
服务器·人工智能·阿里云·云原生·云计算·腾讯云·aws
国际云1 天前
腾讯云:数字世界的“量子熔炉”与硅基文明引擎
云计算·腾讯云
LucianaiB1 天前
基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题
人工智能·自动化·腾讯云·trae叒更新了?
Nueuis1 天前
微信小程序使用腾讯云COS SDK实现用户头像上传
微信小程序·小程序·腾讯云
zxy28472253012 天前
C#上传文件到腾讯云的COS
c#·腾讯云·cos·oss·存储桶
国际云,接待3 天前
2025年服务器技术全景解析:量子计算、液冷革命与未来生态构建
运维·服务器·架构·云计算·腾讯云·量子计算
源来是大数据的菜鸟4 天前
如何将腾讯云的测试集成到自己的SpringBoot中
spring boot·redis·腾讯云
VyrnSynx6 天前
从0到上线,CodeBuddy 如何帮我快速构建旅游 App?
腾讯云·ai编程·旅游·腾讯云ai代码助手
同聘云7 天前
腾讯云web服务器配置步骤是什么?web服务器有什么用途?
服务器·前端·腾讯云
观无8 天前
RabbitMQ应用(基于腾讯云)
消息队列·云计算·rabbitmq·腾讯云