我先做水桶。 相当于你保存照片的容器。 这里是存储图像。
我选择的是共享阅读,私人写作。 注意:如果不选择共享阅读,以后将无法访问其他位置:
公共读取权限可以用匿名id直接读取您存储区中的数据,存在一定的安全风险。 为了确保数据安全,不建议使用此配置。 建议选择私人的。
建议使用防盗链功能。 可以有效防止流量被盗。
但是,这也有风险。 其他人可以使用地址直接访问图像,而不用通过你的后台。 选择私人的情况下,读写图像需要后台。 但是每次读取图像都需要通过后台,增加了后台服务的压力。
桶做好了就可以进入桶管理了。 手动上传图像。
每个图像保存到桶中后,都有自己的外部网地址。 命名图像路径和图像的名称。 形成唯一的地址,访问图像。 外部网的地址不变。 保存时自己指定图像的路径和图像名称。
然后是包。
! -数字键盘云对象存储--dependencygroupidcom.q cloud/groupidartifactidcos _ API/artifactidversion5.6. 45/version
在此选择上传的方式,填写参数。 在右侧生成代码。 但是我觉得这里的介绍不是那么详细。 可能是因为腾讯的业务太多了。 所以api文档也非常巨大。 有必要把几个地方也组合起来看。 我选择的是基本上传,5G以下的。 因为我只保存头像。 所以不太大
//指定要上传的文件file local file=新文件(local file path )//要上传到的存储时段stringbucketname=' example bucket-1250000 要上传到//cos的对象密钥String key='exampleobject '; putobjectrequestputobjectrequest=newputobjectrequest (bucket name,key,localFile ); putobjectresultputobjectresult=cosclient.putobject (putobjectrequest; 这是他生成的原始代码
* *后台名称* *时段的名称。
指定要上传到//cos的对象密钥
在string key=“example object”cos中使用对象密钥,我不太清楚,这是您保存在水桶中的文件的名称和路径。 他会分析
string key=“111/222/444/99838.png”可以这样写。 解析成会议1、2、4、文件。 指定后面的时间戳文件名,形成访问路径。 服务器保存时。 可以直接使用外部网地址为自己定义的文件名。 形成路径并将其保存到数据库中。 访问时通过页面直接访问腾讯,查找图像。 减轻服务器的压力。
package com.tanhua.sso; import com.qcloud.cos.COSClient; import com.q cloud.cos.client config; import com.q cloud.cos.auth.basiccoscredentials; import com.q cloud.cos.auth.cos credentials; import com.q cloud.cos.exception.cosclientexception; import com.q cloud.cos.http.http protocol; import com.q cloud.cos.model.putobjectrequest; import com.q cloud.cos.model.putobjectresult; import com.q cloud.cos.region.region; import org.junit.Test; import org.junit.runner.RunWith; importorg.spring framework.beans.factory.annotation.auto wired; importorg.spring framework.boot.test.context.springboottest; importorg.spring framework.test.context.JUnit4. spring runner; import java.io.File; @ springboottest @ run with (spring runner.class ) publicclasscosmain { @ autowiredcosclientcosclient; @Test public 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。
他的文档原始代码差不多也就这样,copy过来。修改一下。
主要时加上自己的keyid 和key。我用的时springboot 。spring扫描的时候。
因为我加了@Configuration 注解。会被spring 扫描到。
我在方法上加了@Bean 注解。这是spirng整合第三方类的表示。返回第三方对象。sipring扫描到这个方法时会将方法返回的对象。放到springIOC容器进行管理。所以后面我用到COSClient的之后直接
@Autowired
COSClient cosClient; DI 依赖注入就好了。 如果没有用spirng 的,可以直接把代码cpry 过来,拼接上就可以用了。
其实代码还是满简介的,传入流对象。他自己就可以存储了。
用他提供的外网地址加key 文件路径,文件名,可以直接访问。
补充说明一下这个访问域名在这。
域名加,存储的文件名,可以直接访问
这是我刚刚存储的一张图片。没有加文件路径。