1. 导入依赖
<dependency>
  <groupId>com.qcloud</groupId>
  <artifactId>cos_api</artifactId>
  <version>5.6.35</version>
</dependency>

  1. 工具类 TencentCOSUploadFileUtil
public class TencentCOSUploadFileUtil {
    // 存储桶名称
    private static final String BUCKET_NAME = "bmft-img-1304103443";
    //secretId 秘钥id
    private static final String SECRET_ID = "AKIxxxrxxxN0PaVFaiZ";
    //SecretKey 秘钥
    private static final String SECRET_KEY = "mHfnxxxxx6TblhNmwqQ";
    // 腾讯云 自定义文件夹名称
    private static final String PREFIX = "/leetcode/";
    // 访问域名
    public static final String URL = "https://bmft-img-1304103443.cos.ap-chongqing.myqcloud.com";
    // 创建COS 凭证
    private static final COSCredentials credentials = new BasicCOSCredentials(SECRET_ID,SECRET_KEY);
    // 配置 COS 区域 就购买时选择的区域 我这里是 广州(guangzhou)
    private static final ClientConfig clientConfig = new ClientConfig(new Region("ap-chongqing"));

    public static String uploadfile(MultipartFile file){
        // 创建 COS 客户端连接
        COSClient cosClient = new COSClient(credentials,clientConfig);
        String fileName = file.getOriginalFilename();
        try {
            String substring = fileName.substring(fileName.lastIndexOf("."));
            File localFile = File.createTempFile(String.valueOf(System.currentTimeMillis()),substring);
            file.transferTo(localFile);
            Random random = new Random();
            fileName =PREFIX+random.nextInt(10000)+System.currentTimeMillis()+substring;
            // 将 文件上传至 COS
            PutObjectRequest objectRequest = new PutObjectRequest(BUCKET_NAME,fileName,localFile);
            cosClient.putObject(objectRequest);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            cosClient.shutdown();
        }
        return URL+fileName;
    }
}
  1. 编写 controller 层 UploadFileController
@RestController
public class UploadFileController {
    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file){
        if (null == file) {
            return "文件为空";
        }
        String filePath = TencentCOSUploadFileUtil.uploadfile(file);
        return "上传成功,访问地址为:"+filePath;
    }
}

4.启动程序 用 postman 测试

image-20210210164620163

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐