騰訊雲cos伺服器上傳圖片
阿新 • • 發佈:2018-11-22
1、首先去騰訊雲cos官網註冊賬號,選擇【物件儲存】;
2、接下來建立【儲存桶】,【儲存桶】的意思類似於單獨的伺服器空間,只有建立了儲存桶才能儲存資源;
3、系統會根據儲存桶的名稱 自動生成一個獨有的域名;
4、儲存空間搞定了,接下來就是從本地上傳圖片到雲伺服器了;同時騰訊雲也提供了SDK文件和API文件,供我們借鑑,還是相當清楚的;
5、上傳圖片程式碼,需要注意的是區域,要和伺服器上儲存桶列表的【所屬區域】欄位一致;
package com.cos.web; import java.io.File; import java.net.URL; import java.util.Date; 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.PutObjectRequest; import com.qcloud.cos.model.PutObjectResult; import com.qcloud.cos.model.StorageClass; import com.qcloud.cos.region.Region; public class Upload { public static void main(String[] args) { // 1 初始化使用者身份資訊API金鑰(secretId, secretKey) COSCredentials cred = new BasicCOSCredentials("AKIDXuxxx", "71f4FEyWxxx"); // 2 設定bucket的區域, COS地域的簡稱請參照 https://cloud.tencent.com/document/product/436/6224 ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing")); // 3 生成cos客戶端 COSClient cosclient = new COSClient(cred, clientConfig); // 儲存桶bucket名需包含appid String bucketName = "demo-1258118289"; // 指定要上傳到 COS 上物件鍵 // 物件鍵(Key)是物件在儲存桶中的唯一標識。例如,在物件的訪問域名 `bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg` 中,物件鍵為 doc1/pic1.jpg, 詳情參考 [物件鍵](https://cloud.tencent.com/document/product/436/13324) String key = "2.png"; File localFile = new File("src/main/resources/2.png"); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile); // 設定儲存型別, 預設是標準(Standard), 低頻(standard_ia) putObjectRequest.setStorageClass(StorageClass.Standard_IA); try { PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest); Date expiration = new Date(new Date().getTime() + 5 * 60 * 10000); URL url = cosclient.generatePresignedUrl(bucketName, key, expiration); System.out.println("圖片在COS伺服器上的url:"+url); // putobjectResult會返回檔案的etag String etag = putObjectResult.getETag(); } catch (CosServiceException e) { e.printStackTrace(); } catch (CosClientException e) { e.printStackTrace(); } // 關閉客戶端 cosclient.shutdown(); } }
6、下載圖片的程式碼
package com.cos.web; import java.io.File; 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.GetObjectRequest; 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; public class Download { public static void main(String[] args) { // 1 初始化使用者身份資訊(secretId, secretKey) COSCredentials cred = new BasicCOSCredentials("AKIDXu20jxxxxx","71f4FEyWxxxx"); // 2 設定bucket的區域, COS地域的簡稱請參照 // https://cloud.tencent.com/document/product/436/6224 ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing")); // 3 生成cos客戶端 COSClient cosclient = new COSClient(cred, clientConfig); // bucket名需包含appid String bucketName = "demo-1258118289"; // 物件鍵(Key)是物件在儲存桶中的唯一標識。例如,在物件的訪問域名 `bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg` 中,物件鍵為 doc1/pic1.jpg, 詳情參考 [物件鍵](https://cloud.tencent.com/document/product/436/13324) String key = "1.png"; File downFile = new File("src/main/resources/2.png"); // 指定要下載的檔案所在的 bucket 和物件鍵 GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key); try { ObjectMetadata downObjectMeta = cosclient.getObject(getObjectRequest, downFile); // putobjectResult會返回etag String etag = downObjectMeta.getETag(); System.out.println(etag); } catch (CosServiceException e) { e.printStackTrace(); } catch (CosClientException e) { e.printStackTrace(); } // 關閉客戶端 cosclient.shutdown(); } }
ps:
1 初始化使用者身份資訊(secretId, secretKey),在【金鑰管理】裡面;
2 設定bucket的區域, COS地域的簡稱請參照 https://cloud.tencent.com/document/product/436/6224