Spring boot 上传文件到腾讯云对象储存COS(完整步骤流程)

1.登录到腾讯云平台(https://cloud.tencent.com

image

2.选择【云产品,对象存储

image

3.新建

image
image
image

4.查看刚刚创建存

image

5.选择

image
image

6.创建Spring boot项目


<!--腾讯云存储依赖-->

<dependency>

    <groupId>com.qcloud</groupId>

    <artifactId>cos_api</artifactId>

    <version>5.2.4</version>

</dependency>

7.把刚刚我们创建的腾讯云存储桶的信息添加进Spring boot项目的配置文件中

image

8.编写上传的控制器


package com.pingao.guns.modular.demo.controller;

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.model.PutObjectResult;

import com.qcloud.cos.region.Region;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;

import java.io.File;

import java.io.IOException;

import java.util.Calendar;

import java.util.UUID;

/**

* 文件上传控制器

*/

@Controlle

@RequestMapping(value = "/upload")

public class UploadController {


    @Value("${spring.tengxun.accessKey}")

    private String accessKey;

    @Value("${spring.tengxun.secretKey}")

    private String secretKey;

    @Value("${spring.tengxun.bucket}")

    private String bucket;

    @Value("${spring.tengxun.bucketName}")

    private String bucketName;

    @Value("${spring.tengxun.path}")

    private String path;

    @Value("${spring.tengxun.qianzui}")

    private String qianzui;

    /**

    * 上传道腾讯云服务器(https://cloud.tencent.com/document/product/436/10199)

    * @return

    */

    @RequestMapping(value = "/tengxun",method = RequestMethod.POST)

    @ResponseBody

    public Object Upload(@RequestParam(value = "file") MultipartFile file, HttpSession session){

        if(file == null){

            return new UploadMsg(0,"文件为空",null);

        }

        String oldFileName = file.getOriginalFilename();

        String eName = oldFileName.substring(oldFileName.lastIndexOf("."));

        String newFileName = UUID.randomUUID()+eName;

        Calendar cal = Calendar.getInstance();

        int year = cal.get(Calendar.YEAR);

        int month=cal.get(Calendar.MONTH);

        int day=cal.get(Calendar.DATE);

        // 1 初始化用户身份信息(secretId, secretKey)

        COSCredentials cred = new BasicCOSCredentials(accessKey, secretKey);

        // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224

        ClientConfig clientConfig = new ClientConfig(new Region(bucket));

        // 3 生成cos客户端

        COSClient cosclient = new COSClient(cred, clientConfig);

        // bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式

        String bucketName = this.bucketName;

        // 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口

        // 大文件上传请参照 API 文档高级 API 上传

        File localFile = null;

        try {

            localFile = File.createTempFile("temp",null);

            file.transferTo(localFile);

            // 指定要上传到 COS 上的路径

            String key = "/"+this.qianzui+"/"+year+"/"+month+"/"+day+"/"+newFileName;

            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);

            PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);

            return new UploadMsg(1,"上传成功",this.path + putObjectRequest.getKey());

        } catch (IOException e) {

            return new UploadMsg(-1,e.getMessage(),null);

        }finally {

            // 关闭客户端(关闭后台线程)

            cosclient.shutdown();

        }

    }


    private class UploadMsg{

        public int status;

        public String msg;

        public String path;

        public UploadMsg() {

            super();

        }

        public UploadMsg( int status,String msg,String path){       

        this.status = status;

        this.msg = msg;

        this.path = path;

      }

}

————————————————

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容