新建maven項目 加入相關jar包
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.5.3</version>
</dependency>
//1、測試上傳本地文件,返回地址
//2、測試上傳文件流,返回地址
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) {
//1、測試上傳本地文件,返回地址
String url = SimpleUploadFileFromLocal("aaa/cc/cam.png","d://cam.png");
System.out.println(url);
//2、測試上傳文件流,返回地址
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;
}
}