新建maven项目 加入相关jar包java
<dependency> <groupId>com.qcloud</groupId> <artifactId>cos_api</artifactId> <version>5.5.3</version> </dependency>
//一、测试上传本地文件,返回地址api
//二、测试上传文件流,返回地址 缓存
package com.pt.TencentCosDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; 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.exception.CosClientException; import com.qcloud.cos.exception.CosServiceException; import com.qcloud.cos.model.ObjectMetadata; import com.qcloud.cos.model.PutObjectRequest; import com.qcloud.cos.model.PutObjectResult; import com.qcloud.cos.model.StorageClass; import com.qcloud.cos.region.Region; import com.qcloud.cos.transfer.TransferManager; /** * @author: py * @version:2019年6月10日 下午9:52:06 * @Desc 腾讯云 cos对象存储 */ public class TencentCosUtil_py { static String bucketName = "p-63553"; //桶的名称 static String region = "ap-guangzhou";//区域北京则 beijing static String appId = "1553"; //APPID static COSCredentials cred = null; static TransferManager transferManager = null; static ClientConfig clientConfig = null; static { // 1 初始化用户身份信息(secretId, secretKey) //SecretId 是用于标识 API 调用者的身份 String SecretId = "AKIDlKSrEb0iCRuKoVFm"; //SecretKey是用于加密签名字符串和服务器端验证签名字符串的密钥 String SecretKey = "hDg6xb1ta2EBtV4OqE"; cred = new BasicCOSCredentials(SecretId, SecretKey); // 2 设置bucket的区域, clientConfig = new ClientConfig(new Region(region)); } public static void main(String[] args) { //一、测试上传本地文件,返回地址 String url = SimpleUploadFileFromLocal("aaa/cc/cam.png","d://cam.png"); System.out.println(url); //二、测试上传文件流,返回地址 String url2; try { //MultipartFile.getInputStream() url2 = SimpleUploadFileFromStream("aaa/dd/cam.png",new FileInputStream(new File("d://cam.png"))); System.out.println(url2); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @author py * @date 2019年6月10日下午10:05:08 * @param key key前面为路径,后面为文件名 * @param filepath 上传文件的路径 * @return String * @Des: 将本地文件上传到COS * "aaa/cc/cam.png","d://cam.png" */ public static String SimpleUploadFileFromLocal(String key ,String filepath) { // 3 生成cos客户端 COSClient cosClient = new COSClient(cred, clientConfig); File localFile = new File(filepath); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile); // 设置存储类型, 默认是标准(Standard), 低频(standard_ia) putObjectRequest.setStorageClass(StorageClass.Standard); try { PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); // 关闭客户端 cosClient.shutdown(); return "https://"+bucketName+".cos."+region+".myqcloud.com/"+key; } catch (CosServiceException e) { e.printStackTrace(); } catch (CosClientException e) { e.printStackTrace(); } // 关闭客户端 cosClient.shutdown(); return null; } // 从输入流进行读取并上传到COS public static String SimpleUploadFileFromStream(String key,InputStream input) throws IOException { // 生成cos客户端 COSClient cosClient = new COSClient(cred, clientConfig); // bucket名需包含appid ObjectMetadata objectMetadata = new ObjectMetadata(); // 从输入流上传必须制定content length, 不然http客户端可能会缓存全部数据,存在内存OOM的状况 objectMetadata.setContentLength(Integer.valueOf(input.available()).longValue()); // 默认下载时根据cos路径key的后缀返回响应的contenttype, 上传时设置contenttype会覆盖默认值 objectMetadata.setContentType("image/jpeg"); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, input, objectMetadata); // 设置存储类型, 默认是标准(Standard), 低频(standard_ia) putObjectRequest.setStorageClass(StorageClass.Standard); try { PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); // 关闭客户端 cosClient.shutdown(); return "https://"+bucketName+".cos."+region+".myqcloud.com/"+key; } catch (CosServiceException e) { e.printStackTrace(); } catch (CosClientException e) { e.printStackTrace(); } // 关闭客户端 cosClient.shutdown(); return null; } }