当前位置: 首页 > news >正文

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

腾讯云上传步骤:
在这里插入图片描述

在这里插入图片描述

service-vod模块化中

①、参考文档,引入依赖
在这里插入图片描述

②、配置文件application.properties
在这里插入图片描述

③、创建工具类

  • 初始化bean的时候读取配置文件
@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;@Overridepublic void afterPropertiesSet()throws Exception{END_POINT = region;ACCESS_KEY_ID = secretId;ACCESS_KEY_SECRET = secretKey;BUCKET_NAME = bucketName;}
}

③、业务

@Api(tags = "文件上传接口")
@RestController
@RequestMapping("/admin/vod/file")
@CrossOrigin
public class FileUploadController{@Autowiredprivate FileService fileService;@ApiOperation("文件上传")@PostMapping("upload")public Result uploadFile(MultipartFile file){String url = fileService.upload(file);return Result.ok(url).message("上传文件成功");}
}
@Service
public class FileServiceImpl implements FileService{@Overridepublic 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;}
}
http://www.dtcms.com/a/137913.html

相关文章:

  • 解释器模式详解与真实场景案例(Java实现)
  • 网线传输、串口传输和光纤传输分别有什么优缺点
  • 《Science》观点解读:AI无法创造真正的智能体(AI Agent)
  • RISC-V 与 OpenHarmony 的结合意义与应用建议
  • 0基础 | 开发环境 |51单片机编译环境 Keil C251和C51,STM32的编译环境Keil 5 MDK-ARM
  • OpenHarmony - 小型系统内核(LiteOS-A)(六)
  • Django REST framework 并结合 `mixin` 的示例
  • 从代码学习深度学习 - Transformer PyTorch 版
  • 乐言科技:云原生加速电商行业赋能,云消息队列助力降本 37%
  • 【云安全】云原生- K8S IngressNightmare CVE-2025-1974(漏洞复现完整教程)
  • 事务隔离级别实战
  • 跨平台嵌入式音视频开发指南:EasyRTC音视频通话的多场景适配与AI扩展能力
  • 一路磕磕绊绊解决flutter doctor 报错CocoaPods not installed
  • 【软件系统架构】事件驱动架构
  • 【音视频】MP4解封装
  • [特殊字符] 基于大模型的地理领域文档中英互译自动化方案
  • React 组件类型详解:类组件 vs. 函数组件
  • 【并行分布计算】Hadoop完全分布搭建
  • 【机器学习】大数据时代,模型训练慢如牛?解锁Spark MLlib与分布式策略
  • 【ROS】局部规划器概述
  • 抽象的https原理简介
  • React JSX 语法深度解析与最佳实践
  • 第九节:React HooksReact 18+新特性-React 19的use钩子如何简化异步操作?
  • React 开放封闭原则详解,构建可扩展的应用
  • React Native 0.79 稳定版发布,更快的工具、更多改进
  • 6、事件处理法典:魔杖交互艺术——React 19 交互实现
  • MySQL数据库安装配置详细教程
  • AUTOSAR图解==>AUTOSAR_SWS_DefaultErrorTracer
  • 网络层IP协议知识大梳理
  • 探寻Gson解析遇到不存在键值时引发的Kotlin的空指针异常的原因