腾讯云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 {

    @Autowired
    COSClient cosClient;

    @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。
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;

    @Bean
    public 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 文件路径,文件名,可以直接访问。

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

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

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是一个示例代码,可以用来调用腾讯云cos存储桶api生成签名并存入图片: ``` <?php require_once 'cos-php-sdk-v5/vendor/autoload.php'; // 引入 SDK 自动加载文件 use Qcloud\Cos\Client; use Qcloud\Cos\Auth; // 配置参数 $bucket = 'your_bucket_name'; $region = 'your_region'; $secretId = 'your_secret_id'; $secretKey = 'your_secret_key'; // 创建 COS 客户端和认证对象 $cosClient = new Client([ 'region' => $region, 'credentials' => [ 'secretId' => $secretId, 'secretKey' => $secretKey ], 'scheme' => 'https' ]); $auth = new Auth($secretId, $secretKey); // 生成签名并上传图片 $filename = 'your_filename'; // 文件名 $filepath = 'your_filepath'; // 文件路径 $expired = time() + 3600; // 签名有效期,单位为秒 $sign = $auth->createReusableSignature($expired, [ 'bucket' => $bucket, 'region' => $region, 'method' => 'PUT', 'path' => '/' . $bucket . '/' . $filename, ]); // 生成签名 $response = $cosClient->putObject([ 'Bucket' => $bucket, 'Key' => $filename, 'Body' => fopen($filepath, 'rb'), 'ContentType' => 'image/jpeg', 'ACL' => 'public-read', 'CacheControl' => 'max-age=86400', 'Expires' => gmdate('D, d M Y H:i:s T', time() + 86400), 'Metadata' => [ 'x-cos-acl' => 'public-read', 'x-cos-storage-class' => 'STANDARD', ], 'headers' => [ 'Authorization' => $sign, ], ]); $url = $response['ObjectURL']; // 获取上传后的文件访问链接 ?> ``` 在这个示例代码中,我们首先引入了腾讯云cos存储桶的SDK自动加载文件。然后,我们设置了一些配置参数,包括存储桶名称、地域、secretId和secretKey等信息。接下来,我们创建了COS客户端和认证对象。在生成签名和上传图片时,我们使用了`createReusableSignature()`方法生成签名,并使用`putObject()`方法上传图片到存储桶。最后,我们获取了上传后的文件访问链接。 需要注意的是,这个示例代码只是一个简单的示例,实际使用时需要根据自己的需求进行适当修改。比如,可以根据需要设置上传文件的ACL、存储类型、缓存控制等参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silence丶你的名字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值