腾讯云cos上传文件

  • 一.首先,打开官网,注册账号
  • 二.步入开发正题,前面都是铺垫
    • 1.首先,导入JAR包
    • 2.配置文件中增加腾讯云COS的配置
    • 3.JAVA代码
      • 1.配置文件yml中cos配置对应的类
      • 2.编写config,获取CosClient
      • 3.对应的上传文件的controller中,新增接口
      • 4.返回参数

说明:项目开发中,需要上传文件到腾讯云上,所有就开始研究了下腾讯云。

一.首先,打开官网,注册账号

链接: https://cloud.tencent.com/.

查一下必备参数
用户->账号信息->APPID

即可查看APPID

因为我这里想自己尝试下,不够买的话,没法创建存储桶,所以我这里实名认证了一下,并且购买了服务器,这样自己开发起来方便,直观看到存储上的文件,有需要的可以考虑,我想着也不贵,就尝试了下。
接下来是购买的过程:

云产品-对象存储



这个时候就可以创建存储桶,到时候上传的文件会上传到 存储桶里




这样存储桶就创建好了。== 存储桶名称后面配置会用,留意一下==。

这样在存储桶列表,即可查看。
点击上图 ->配置管理

这里参数注意一下,后面要用到

点击进来即可看到,这些参数后面配置会用到,留意一下。

二.步入开发正题,前面都是铺垫

1.首先,导入JAR包

参考文档: https://www.freesion.com/article/86731291045/.

<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.8</version>
</dependency>

2.配置文件中增加腾讯云COS的配置

如下:
查看自己的appId和secretId,secretKey
bucket-name是自己的存储桶名称,region-id值得是所属地域
base-url值得是你最终上传到cos上之后,返回的临时下载链接或者对象地址,有一个固定的url
上面都有这些参数的对应位置查找,自行查找一下。

3.JAVA代码

1.配置文件yml中cos配置对应的类

package com.office.dto;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.io.Serializable;@Data
@Component
@ConfigurationProperties(prefix = "tencent.cos")
public class TencentCos implements Serializable {private String appId;private String secretId;private String secretKey;private String bucketName;private String regionId;private String baseUrl;
}

2.编写config,获取CosClient

我这里是什么 图片 pdf… 等,都可上传,就没像上述文档一样

package com.office.config;
import com.office.dto.TencentCos;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.region.Region;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "tencent")
public class TencentCosConfig {public static final String COS_ATTACHMENT = "attachment";@Autowiredprivate TencentCos tencentCos;@Bean@Qualifier(COS_ATTACHMENT)@Primarypublic COSClient getCoSClient(){//初始化用户身份信息BasicCOSCredentials cosCredentials = new BasicCOSCredentials(tencentCos.getSecretId(), tencentCos.getSecretKey());//设置bucket区域//clientConfig中包含了设置regionClientConfig clientConfig = new ClientConfig(new Region(tencentCos.getRegionId()));//生成cos客户端COSClient cosClient = new COSClient(cosCredentials, clientConfig);return cosClient;}
}

3.对应的上传文件的controller中,新增接口

    @Autowiredprivate TencentCos tencentCos;@Resourceprivate TencentCosConfig tencentCosConfig;@Value("${tencent.cos.bucket-name}")private String bucketName;@RequestMapping(value = "/uploadFileTencentCos",method = RequestMethod.POST)public ResultObject getUploadFileTencentCosUrl(@RequestParam("multipartFile") MultipartFile multipartFile) throws SystemException, UploadException {ResultObject result = ResultObject.createInstance();//判断文件不为空if (ObjectUtils.isEmpty(multipartFile) || multipartFile.getSize()<=0){throw new SystemException("未指定文件!");}File localFile = null;String originalFilename = null;String[] filename = null;try {originalFilename = multipartFile.getOriginalFilename();logger.info("fileName = {}",originalFilename);filename  = originalFilename.split("\\.");localFile = File.createTempFile(filename[0], filename[1]);//将localFile这个文件所指向的文件  上传到对应的目录multipartFile.transferTo(localFile);localFile.deleteOnExit();} catch (IOException e) {e.printStackTrace();logger.info("MultipartFile transfer file IOException ={}",e.getMessage());//文件上传失败就返回错误响应throw new UploadException("上传失败!");}if(localFile == null){throw new UploadException("临时文件为空!");}//2.【将文件上传到腾讯云】// PutObjectRequest(参数1,参数2,参数3)参数1:存储桶,参数2:指定腾讯云的上传文件路径,参数3:要上传的文件String key = TencentCosConfig.COS_ATTACHMENT + "/" + new Date().getTime() + "." +filename[1];//String key = baseUrl + "/" + originalFilename;logger.info("key = {}", key);PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);//设置存储类型 默认标准型putObjectRequest.setStorageClass(StorageClass.Standard);//获得到客户端COSClient cosClient = tencentCosConfig.getCoSClient();try {PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);//putObjectResult 会返回etagString eTag = putObjectResult.getETag();logger.info("eTag = {}", eTag);} catch (CosServiceException e) {logger.error("CosServiceException ={}", e.getMessage());throw new CosServiceException(e.getMessage());} catch (CosClientException e) {logger.error("CosClientException ={}", e.getMessage());throw new CosClientException(e.getMessage());}cosClient.shutdown();String url = tencentCos.getBaseUrl() + "/" + key;logger.info("上传路径:"+url);HashMap<String, Object> map = new HashMap<>();map.put("originFileName",originalFilename);String[] newFileName = key.split("/");map.put("newFileName",newFileName[1]);map.put("filePath",url);result.setData(map);return result;}

这里我自己创建了个 UploadException 异常。

4.返回参数

{"success": true,"message": "成功","data": {"originFileName": "火星图片.jpg","filePath": "https://存储桶名称.cos.ap-nanjing.myqcloud.com/attachment/1650531205870.jpg","newFileName": "1650531205870.jpg"},"errorfield": null,"msginfo": null
}

最后,在腾讯云即可查看上传的文件。

欢迎留言!

腾讯云cos上传文件相关推荐

  1. 腾讯云cos上传文件功能封装

    前言:要使用cos要先去腾讯云创建cos储存桶,创建完储存桶按步骤来就可以了. 安装依赖 npm i cos-js-sdk-v5 创建文件upload.js const COS = require(' ...

  2. 利用腾讯云进行上传文件

    1.导入依赖 <!-- 腾讯云文件上传--><dependency><groupId>com.qcloud</groupId><artifactI ...

  3. 腾讯云COS上传下载文件

    1.初始化COSClient import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qclou ...

  4. 腾讯云cos上传及获取

    需求背景:在开发过程中遇到过需要用户上传文件及下载文件的需求,可文件上传到服务器又会对服务器造成越来越大的压力,这时就考虑把文件放到云上.(这里的云不是天上的云哈~~~) 前期准备:开通腾讯云账号并购 ...

  5. tp6整合腾讯云cos上传

    1.创建一个名为 composer.json的文件,内容如下: { "require": {"qcloud/cos-sdk-v5": ">=2. ...

  6. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  7. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  8. 如何向天翼云服务器上传文件,天翼云盘如何上传文件?

    天翼云盘官方版是一个提供文件同步.备份及分享等服务的网络云存储平台.您可以通过网页.pc客户端及移动客户端随时随地的把照片.音乐.视频.文档等轻松地保存到网络,无须担心文件丢失.通过天翼云,多终端上传 ...

  9. 怎么样向云服务器上传文件_向云服务器上传文件以及移动到指定文件夹

    向云服务器上传文件以及移动到指定文件夹 一.上传文件到云服务器 1. 打开 CuteFTP ,服务器 IP 地址设置为 101.227.245.9 .用户名和密码为空,端口 21 ,点击连接: 出现对 ...

  10. 如何向天翼云服务器上传文件,天翼云储存上传文件的方法

    也许您总是担心电脑里的重要资料会因为电脑故障而意外丢失?也许您总是为了保存文件,用U盘拷贝的同时还发送一份邮件给自己?也许您总是苦恼于相片太多,手机内存空间不够用?立刻开始使用天翼云,一切将迎刃而解! ...

最新文章

  1. AI实时筛查癌细胞,普通显微镜简单改装就能用,谷歌新突破登上Nature子刊
  2. 架构师之道:面向组件的Web架构设计
  3. Y1ng‘s BabyCode
  4. 随想(二):简化别人的工作,就是简化自己的工作,节省自己的时间
  5. Apollo浏览全貌
  6. 快速理解binary cross entropy 二元交叉熵
  7. jpa mysql脚本迁移_Spring Boot 数据库迁移:概述
  8. 页面jquery调试的一个宝贵经验(类似于Eclipse中的写出一个对象点它的方法时候用alt加/可以跳出来它所有的方法)...
  9. 《Netty权威指南》第1章 Java的I/O演进之路
  10. 基于linux搭建zmodem服务
  11. php木马检测关键词
  12. 【学习笔记】kaggle案例之泰坦尼克号(基于R)
  13. 写文案,认准这几个APP就够了
  14. 计算机专业独显好还是集显好,笔记本选购指南:笔记本电脑核显好还是独显好?...
  15. Android快速SDK(1)基础工具库QuickBase
  16. OPLS全原子力场在lammps中的使用
  17. C#之internal访问修饰符
  18. Android WiFi直连 双向通信
  19. 当幸福来敲门(The Pursuit of Happyness)和程序员人生
  20. 鸿蒙os系统使用技巧,鸿蒙OS系统详解

热门文章

  1. AutoCAD for Mac 性能低下或不佳
  2. 什么是法线贴图 今天教你如何制作法线贴图
  3. Git 码云 上传 本地项目 步骤/创建分支
  4. 框架设计--第八章 动态SQL--习题答案
  5. twaver html5 api,TWaver版3D化学元素周期表
  6. 【教程】MFC到Delphi的皮肤移植
  7. 微信小程序广告接入,小程序加广告
  8. 油猴+百度网盘+加速
  9. 控制台接收信息转发_微信多群转播能够起到什么作用?微信群聊录制课程语音转发多群怎么操作?...
  10. 你不知道的智联招聘网功能?