@ResponseBody
@RequestMapping(value = "uploadFile")
public R upload(@RequestParam(value="file")MultipartFile file, HttpServletRequest request) {
String oldFileName = file.getOriginalFilename();
String eName = oldFileName.substring(oldFileName.lastIndexOf("."));
String newFileName = UUID.randomUUID()+eName;
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(Constant.ACCESSKEY, Constant.SECRETKRY);
// 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region(Constant.BUCKET));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
String bucketName = Constant.BUCKETNAME;
// 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口
// 大文件上传请参照 API 文档高级 API 上传
File localFile = null;
try {
localFile = File.createTempFile("temp",null);
file.transferTo(localFile);
// 指定要上传到 COS 上的路径(qianzhui:就是你的文件夹名称,自己定义)
String key = "/"+qianzhui+"/"+DateUtils.format(new Date())+"/"+newFileName;
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);
FileDO sysFile = new FileDO();
sysFile.setUrl(Constant.PATH + putObjectRequest.getKey());
return R.ok().put("fileName", sysFile);
} catch (IOException e) {
return R.error();
}finally {
// 关闭客户端(关闭后台线程)
cosclient.shutdown();
}
}
配置(可以放到配置文件中 根据个人爱好)
/**
* 腾讯云配置secretId
*/
public static final String ACCESSKEY = "xxxxxxOO6i171h8OnEn9HCsJUQ6Ylirjog";
/**
* 腾讯云配置secretKey
*/
public static final String SECRETKRY = "xxxxxxpFPJ3YnuoY4KQJ2YGo9HA";
/**
* 所属地域
*/
public static final String BUCKET = "ap-chengdu";
/**
* 存储桶名称
*/
public static final String BUCKETNAME = "xxxxxx";
/**
* 访问路径
*/
public static final String PATH = "https://xxxxxx.file.myqcloud.com";
依赖版本
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.2.4</version>
</dependency>