package com.jc.chile.booksgrab.utils;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.model.*;
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.region.Region;
import java.io.*;
/**
* @Description 騰訊雲存儲
* @Author liangzhiqing
* @Date 2019/10/9 9:56
*/
public class CosConstants {
//用戶身份信息
private final static String SECRET_ID = "";
private final static String SECRET_KEY = "";
//bucket 區域
private final static String BUCKET_REGION = "";
//存儲桶
private final static String BUCKET_NAME = "";
private COSClient cosClient;
public CosConstants(){
COSCredentials credentials = new BasicCOSCredentials(SECRET_ID, SECRET_KEY);
//設置區域
Region region = new Region(BUCKET_REGION);
ClientConfig clientConfig = new ClientConfig(region);
//生成COS客戶端
cosClient = new COSClient(credentials, clientConfig);
}
//上傳不超過5G的文件
//key:上傳到COS的鍵,例如:key = images/picture.jpg 上傳後訪問地址是:xxxxx/images/picture.jpg
public void uploadSmallFile(String key, File file){
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, key, file);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
} catch (CosServiceException serverException){
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
} finally {
closeCosClient();
}
}
//輸入流上傳
public void uploadSmallFile(String key, InputStream inputStream){
try {
ObjectMetadata objectMetadata = new ObjectMetadata();
//設置輸入流長度爲500
objectMetadata.setContentLength(inputStream.available());
// 設置 Content type, 默認是 application/octet-stream
//objectMetadata.setContentType("application/pdf");
PutObjectResult putObjectResult = cosClient.putObject(BUCKET_NAME, key, inputStream, objectMetadata);
String etag = putObjectResult.getETag();
} catch (CosServiceException serverException){
serverException.printStackTrace();
} catch (CosClientException clientException) {
clientException.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeCosClient();
}
}
//讀取COS文件內容
public String readerFileContent(String key){
String content = null;
BufferedReader reader = null;
try {
//獲取下載輸入流
GetObjectRequest getObjectRequest = new GetObjectRequest(BUCKET_NAME, key);
COSObject cosObject = cosClient.getObject(getObjectRequest);
COSObjectInputStream cosObjectInputStream = cosObject.getObjectContent();
reader = new BufferedReader(new InputStreamReader(cosObjectInputStream));
byte[] buf = new byte[1024];
String line = null;
while ((line = reader.readLine()) != null){
content += line;
}
} catch (Exception e){
e.printStackTrace();
} finally {
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//關閉cosClient
closeCosClient();
}
return content;
}
public static void main(String[] arts){
CosConstants cosConstants = new CosConstants();
String content = cosConstants.readerFileContent("novel/萬古術皇雕龍畫鳳/第七百零四章暫時結盟 巧騙螻蟻.txt");
System.out.println(content);
}
//關閉cosClient
private void closeCosClient(){
this.cosClient.shutdown();
}
}