腾讯云COS对象存储图片文件API的详细步骤过程

腾讯COS对象存储
Cos桶
首先创建一个桶。相当于你存储图片的容器。我这里是存储图片。

桶

我选则是共有读,私有写。因为不选择共有读的话,以后别的地方没办法访问
注意:
公有读权限可以通过匿名身份直接读取您存储桶中的数据,存在一定的安全风险,为确保您的数据安全,不推荐此配置,建议您选择私有。
建议您使用防盗链功能,可有效防止流量盗刷现象。

但是这个也有风险,别人可以不通过你的后台,使用地址直接访问图片。如果选择私有的话,需要后台才能读写图片。但是每次读取图片都需要通过后台,增加了后台服务器的压力。
javaCOS存储
桶创建好了之后可以进入桶管理。手动上传图片。
在这里插入图片描述
每张图片存储到桶里之后,会有一个自己的外网地址。加上图片的路径,和图片的名称。形成一个唯一地址,访问图片。外网地址是不变的。图片的路径和图片名称,是存储时自己指定的 。

然后就是包了。

   <!--腾讯云对象存储--><dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.45</version></dependency>

这里是我使用的,大家可以找别的版本,或是自己语言的。
腾讯API

腾讯cos存储api
这里选择上传的方式,然后填写参数。右边会生成代码。但是这里的介绍感觉没那么详细。可能因为腾讯的业务太多了。所以api文档也特别庞大。 需要好几处结合起来看。我选择的是基本上传,不超过5G的。因为我只存储头像。所以不会太大

// 指定要上传的文件
File localFile = new File(localFilePath);
// 指定要上传到的存储桶
String bucketName = "examplebucket-1250000000";
// 指定要上传到 COS 上对象键
String key = "exampleobject";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);

这是他生成的原始代码
**bucketName ** 存储桶 的名称。

// 指定要上传到 COS 上对象键
String key = “exampleobject”;
COS 上对象键,这个个感觉说的不太清楚,就是你存储到桶里面的文件的名称, 和路径。 他会解析
String key = “111/222/444/99838.png”; 可以这样写。会吧1,2,4,解析为文件夹。 加上后面的时间戳文件名,形成一个访问路径。服务器在存储时。可以直接用外网地址,加上自己定义的文件名。形成一个路径存储到数据库。访问的时候直接由页面访问到腾讯,查找图片。减轻服务器压力。

package com.tanhua.sso;import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.region.Region;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.io.File;@SpringBootTest
@RunWith(SpringRunner.class)
public class CosMain {@AutowiredCOSClient cosClient;@Testpublic void sendCos() {try {// 指定要上传的文件File localFile = new File("C:\\Users\\silence\\Desktop\\9527.png");// 指定要上传到的存储桶String bucketName = "tanhua-1255913638";// 指定要上传到 COS 上对象键String key = "111/222/444/99838.png";PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);cosClient.putObject(putObjectRequest);} catch (CosClientException e) {e.printStackTrace();}}}

这是我copy 过来后自己测试的代码。
这里又有点小坑。cosClient ,他的代码里面直接用了。但是又没说怎么来的。可能接触这方面比较少的话。不太友好。后来我查阅了别的文档。他的文档太多了。我忘了在哪看的了。就不放地址了。但是他有一个地方说了怎么创建这个cosClient。
cosClient

package com.tanhua.sso.config;import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.region.Region;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class Coslient {// 1 初始化用户身份信息(secretId, secretKey)。// SECRETID和SECRETKEY请登录访问管理控制台进行查看和管理@Value("${tengxun.sms.secretId}")private String secretId;@Value("${tengxun.sms.secretKey}")private String secretKey;@Beanpublic COSClient getCosClient() {COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。Region region = new Region("ap-nanjing");ClientConfig clientConfig = new ClientConfig(region);// 这里建议设置使用 https 协议clientConfig.setHttpProtocol(HttpProtocol.https);// 3 生成 cos 客户端。return new COSClient(cred, clientConfig);}}

他的文档原始代码差不多也就这样,copy过来。修改一下。
主要时加上自己的keyid 和key。我用的时springboot 。spring扫描的时候。
因为我加了@Configuration 注解。会被spring 扫描到。
我在方法上加了@Bean 注解。这是spirng整合第三方类的表示。返回第三方对象。sipring扫描到这个方法时会将方法返回的对象。放到springIOC容器进行管理。所以后面我用到COSClient的之后直接
@Autowired
COSClient cosClient; DI 依赖注入就好了。 如果没有用spirng 的,可以直接把代码cpry 过来,拼接上就可以用了。
腾讯cos上传文件图片
其实代码还是满简介的,传入流对象。他自己就可以存储了。
用他提供的外网地址加key 文件路径,文件名,可以直接访问。

在这里插入图片描述
补充说明一下这个访问域名在这。

在这里插入图片描述
域名加,存储的文件名,可以直接访问
在这里插入图片描述
这是我刚刚存储的一张图片。没有加文件路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java PageUtil + stream 手动计算List 分页

交代一下前言&#xff0c;数据是redis中查询 140,193,88,117 格式大概是这样。 需要切割为long类型的list数组。需要手动计算分页&#xff0c;去mongodb中查询数据。这里我用的手动计算分页的是 hutool 工具包 import cn.hutool.core.util.PageUtil; 里面挺多实用的工具 <…

Redis 缓存 Key

/*** controller 缓存key 自定义前缀 url param token* 生成redis key&#xff1a;SERVER_CACHE_DATA rul 参数&#xff08;param&#xff09; token** param request HttpServletRequest* return createRedisKey*/public static String createRedisKey(HttpServletReques…

UserThreadLocal 用户线程Token拦截验证

注册拦截器 package com.tanhua.server.config;import com.tanhua.server.interceptor.RedisCacheInterceptor; import com.tanhua.server.interceptor.UserTokenInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.co…

jsonwebtoken jwt token 简单加密

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency> //生成tokenMap<String, Object> claims new HashMap<String, Object>();claims.put(&q…

RelativeDateFormat时间计算工具类

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** 时间计算工具类*/ public class RelativeDateFormat {private static final long ONE_MINUTE 60000L;private static final long ONE_HOUR 3600000L;private static final …

随机名字生成小demo源码

根据提供的文字随机生成指定字符的名称&#xff0c;挺简单的&#xff0c;一个小demo吧 源字符 package com.example.demo;import cn.hutool.core.util.RandomUtil;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.F…

silence丶你的名字

/*** 自媒体文章自动审核服务** author silence丶你的名字* createTime 2021-08-22-17:57*/ Service Log4j2 public class WemediaNewsAutoScanServiceImpl implements WemediaNewsAutoScanService {/*** fastServer 地址*/Value("${fdfs.url}")private String fileS…

java.security.invalidkeyexception: illegal key size or default parameters

解决原文摘自&#xff1a;Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决_走过的足迹-CSDN博客Java实现AES加密&#xff0c;抛出异常如下&#xff1a;java.security.InvalidKeyException: Illegal key size代码参考 http://my.oschina.net/J…

Caused by: org.springframework.boot.web.server.PortInUseException: Port 8081 is already in use 端口占用

Caused by: org.springframework.boot.web.server.PortInUseException: Port 8081 is already in use 解决引用&#xff1a; 在dos下&#xff0c;输入 netstat -ano|findstr 8080 //说明&#xff1a;查看占用8080端口的进程 显示占用端口的进程 taskkill /pid 9476 …

Linux+Docker+腾讯云/阿里云服务器 安装MySQL相关命令整理

注&#xff1a;主要是收集整理一些常用的命令 主要参考&#xff1a;狂神说docker以及其他的一些命令收集。主要是因为平常安装的mysql外部无法访问 MYSQL的创建用户&#xff0c;授权用户&#xff0c;删除用户&#xff0c;查看用户_ZJE-CSDN博客_mysql 显示用户1.查看用户2.创…

list.size为1但是内容为null

又是一件离奇的事被我遇到了&#xff0c;哈哈。测试环境暴露出来的问题。还奇怪了好一会儿。然后查了一下资料。原来很多人都遇到了。大概原因就是 sql语句使用了计算函数sum(),但是where条件出来的数据为空&#xff0c;最后返回到java 映射进list了。 造成了list.size为1但是内…

遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串

package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd","Server78"* //遍历这些字符串&#xff0c;如果字符串没有包含数字的&#xff0c;就将字符串中的小写字母转成大写字母并打印字符串*/public static…

idea springboot一直卡在启动 没有日志输出

断点从 springApplication.run(args)&#xff0c;进入 在 SpringApplication&#xff0c;322行 handleRunFailure(context, ex, exceptionReporters, listeners); 可以看到错误信息。 修改后正常启动

40029错误{“errcode“:40029,“errmsg“:“invalid code, rid: 623bbdcd-3c97f4af-5a2c06d6“}

背景&#xff1a;服务器获取微信小程序openid的时候&#xff0c;报code无效。 但是code是根据开发者文档生成的。服务器配置也没有问题。 因为服务器&#xff0c;wechatAppId 和 wechatSecret不一致&#xff0c;会分别报这两个的错误。 最终检查为&#xff0c;生成code的APP…

CORS error 状态码451

项目背景&#xff0c;测试环境的前端代码&#xff0c;指向本地开发机。访问451 谷歌浏览器 查询错误码猜测&#xff0c;可能是跨域问题。其实具体错误也不是特别清楚。就想着换个浏览器。 换搜狗浏览器。问题解决了。记录一下

javassist将类的类型修改,将接口修改为类

将接口interface 修改为class 接口 接口字节码 修改为class类后的字节码 将接口修改成为了&#xff0c;class类 但是这里还有一个坑&#xff0c;是class 没有默认构造&#xff0c;需要添加一个无参构造&#xff0c;不然不能实例化对象 这是生成构造方法后的字节码&#xff0c;…

根据字节码获取类的绝对路径

适用于当前模块或引入模块。 不适用于第三方jar包 /*** 根据字节码获取类绝对路径** param clazz clazz* return classRealPath*/private static String getClassRealPath(Class<?> clazz) {String classPath clazz.getName().replace(".", "/") …

Javassist给方法添加形参,给方法添加参数

前言&#xff1a; 此次用到的jar包 Javassist 此篇博文不是教大家怎么去了解他&#xff0c;因为我也不是很了解 主要是因为这两天有一个需求是扩展knife4j 需要用到大量反射了解到的。 因为这方面资料太少了。我也是慢慢摸索出来的。把这些发出来吧。 我理解的 Javassist 主…

javassist动态给方法添加注解,动态给形参添加注解,动态给类添加注解

参考文档 这个写的挺全的&#xff0c;就是写的有点丑 javassist教程_不懂人情世故的博客-CSDN博客_java javassist转载 https://www.cnblogs.com/rickiyang/p/11336268.htmljavassist使用全解析Java 字节码以二进制的形式存储在 .class 文件中&#xff0c;每一个 .class 文件包…