如何将腾讯云的测试集成到自己的SpringBoot中

1.创建Util

我们将之前测试的test复制过来,

1.将方法里面的固定参数设置出来private

2.将方法里面的变化参数设置作为传入参数

3.返回String类型的URL地址

完整代码如下:

复制代码
package org.huangyingyuan.utils;

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.model.PutObjectRequest;
import com.qcloud.cos.region.Region;
import java.io.File;


//这是关于提供上传文件到腾讯云对象存储的工具类

public class TengXunOssUtil {
    //将参数不会变化的部分提取出来,作为常量(腾讯云的基本信息)
    private static String  secretId= "你的密钥ID"; // 秘钥 ID
    private static String  secretKey= "你的密钥"; // 密钥
    private static String  bucketName= "你的存储桶名称";  // 存储桶名称

    //将参数会发生变化的部分提取出来,作为参数传入
    /**
     * 上传文件到腾讯云对象存储
     * @param COS_PATH 上传到腾讯云的路径
     * @param localFile 本地文件路径
     */
    public static String uploadFile(String COS_PATH,InputStream localFile) throws Exception {
        //初始化返回的url
        String url = "";

        // 1. 初始化用户身份信息
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

        // 2. 设置 bucket 所在的区域
        Region region = new Region("ap-guangzhou");
        ClientConfig clientConfig = new ClientConfig(region);

        // 3. 创建 COS 客户端
        COSClient cosClient = new COSClient(cred, clientConfig);

        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, COS_PATH, localFile);
        cosClient.putObject(putObjectRequest);

        System.out.println("上传成功!");
        //上传成功后,返回url(URL的组成:https://bucketName.cos.region.myqcloud.com/path)
        url = "https://" + bucketName + ".cos." + region.getRegionName() + ".myqcloud.com/" + COS_PATH;

        // 5. 关闭客户端
        cosClient.shutdown();
        return url;
    }
}

2.FileUploadController

复制代码
package org.huangyingyuan.controller;

import org.huangyingyuan.pojo.Result;
import org.huangyingyuan.utils.TengXunOssUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;

@RestController
public class FileUploadController {

    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file)throws IOException {
        //把文件的名字存储到本地磁盘上
        String originalFilename = file.getOriginalFilename();
        //保证文件的名字是唯一的,从而防止文件覆盖(设置一个UUID作为文件名然后加上原文件名的后缀)【本地文件路径】
        String fileName= UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));
        // 创建临时文件(注意!这里创建临时文件是因为我在TengXunOssUtil中使用了OSS的SDK,而SDK要求上传的文件必须是本地文件)
        File tempFile = new File(System.getProperty("java.io.tmpdir") + "/" + fileName);
        // 将MultipartFile写入临时文件
        try (FileOutputStream fos = new FileOutputStream(tempFile)) {
            fos.write(file.getBytes());
        }
        // 使用临时文件进行上传
        String url = TengXunOssUtil.uploadFile(fileName, tempFile);
        // 删除临时文件
        tempFile.delete();
        return Result.success(url);
    }
}

3.成功案例:

到这里我们就实现了通过腾讯云OSS去存储文件了

相关推荐
weixin_460443562 小时前
考试监控大屏为什么不能直接查数据库?WebSocket、Redis与实时数据聚合架构设计
数据库·redis·在线考试系统·培训考试系统·煤矿培训考试系统·煤矿在线考试系统·宏远培训考试系统
九皇叔叔7 小时前
【第二章】Redis基础入门:Redis是什么、为什么快以及核心特性详解
数据库·redis·缓存
MetaLite7 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
凤山老林8 小时前
聊聊企业级 API 安全:Spring Boot 落地 OAuth 2.1、mTLS 与接口签名防篡改
spring boot·后端·安全·oauth
Bs_MoneyMagnet14 小时前
基于springboot+vue的旅游景区点评系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·旅游
ID346107442015 小时前
【课程设计】基于Spring Boot+Vue的校园共享无人机服务系统设计与实现-计算机毕设 附源码44219
javascript·vue.js·spring boot·python·node.js·php·课程设计
vx-程序开发17 小时前
【毕设分享】springboot废品上门回收微信小程序---附源码94491
java·spring boot·毕业设计·源码·课程设计·毕设·大作业
敲代码的嘎仔18 小时前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
行百里er18 小时前
Spring Insight 里如何对 Span 进行清洗
spring boot·spring cloud·监控
谢亮_vipxieliang18 小时前
ValidX时间段验证详解:ISO 8601标准与简化格式
java·spring boot·后端·spring·spring cloud·hibernate