Spring|Spring boot 上传文件到腾讯云对象储存COS(完整步骤流程)
1.登录到腾讯云平台(https://cloud.tencent.com)
文章图片
image 2.选择【云产品,对象存储】
文章图片
image 3.新建
文章图片
image
文章图片
image
文章图片
image 4.查看刚刚创建存
文章图片
image 5.选择
文章图片
image
文章图片
image 6.创建Spring boot项目
com.qcloud cos_api5.2.4
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 = "https://www.it610.com/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 = "https://www.it610.com/tengxun",method = RequestMethod.POST)@ResponseBodypublic Object Upload(@RequestParam(value = "https://www.it610.com/article/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/6224ClientConfig 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;
}}
【Spring|Spring boot 上传文件到腾讯云对象储存COS(完整步骤流程)】————————————————
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- spring|spring boot项目启动websocket
- Spring|Spring Boot 整合 Activiti6.0.0
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot之ImportSelector