1. 程式人生 > >【OSS】Bucket讀寫許可權

【OSS】Bucket讀寫許可權

使用者建立的Bucket總共有三種許可權:

/*私有
 * 只允許自己讀寫操作,其他使用者沒有許可權
 */
CannedAccessControlList acl_private = CannedAccessControlList.Private;
		
/*公共讀寫
 * 允許自己和其他使用者讀寫操作
 */
CannedAccessControlList acl_pub_readwrite = CannedAccessControlList.PublicReadWrite;
		
/*公共讀
 * 只允許自己進行寫操作,但是允許自己及其他使用者進行讀操作
 */
CannedAccessControlList acl_pub_red = CannedAccessControlList.PublicRead;

測試demo

package com.ls;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.Bucket;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;

/**檔案讀寫許可權測試,需要兩個賬號
 */
public class OSSAccessExample {
	/*公司賬號*/
	private static final String ACCESS_ID1 = "*******************";
	private static final String ACCESS_KEY1 = "************************";

	/*自己賬號*/
	private static final String ACCESS_ID2 = "***************";
	private static final String ACCESS_KEY2 = "**********************";

	private static final String OSS_ENDPOINT = "http://oss.aliyuncs.com/";

	public static void main(String[] args) {
		
		// 初始化OSS客戶端
		OSSClient client1 = new OSSClient(OSS_ENDPOINT, ACCESS_ID1, ACCESS_KEY1);
		OSSClient client2 = new OSSClient(OSS_ENDPOINT, ACCESS_ID2, ACCESS_KEY2);

		// key1建立名為saas01的BUCKET,許可權為私有
		createBucket(client1, "saas01", CannedAccessControlList.Private);

		// key2建立名為saas02的BUCKET,許可權為公用讀寫
		createBucket(client2, "saas02", CannedAccessControlList.PublicReadWrite);

		// key1建立名為saas03的BUCKET,許可權為公用讀
		createBucket(client1, "saas03", CannedAccessControlList.PublicRead);
		
		/*上傳檔案*/
		
		String bucketName1 = "saas01";
		String key1 = "索隆Q版.jpg";
		String uploadFilePath1 = "G:/test/索隆Q版.jpg";
		
		String bucketName2 = "saas02";
		String key2 = "女帝.jpg";
		String uploadFilePath2 = "G:/test/女帝.jpg";
		
		String bucketName3 = "saas03";
		String key3 = "啟動日誌.txt";
		String uploadFilePath3 = "G:/test/啟動日誌.txt";
		
		
		try {
			/*對各自的bucket操作,都有許可權*/
			System.out.println("正在上傳...");
			uploadFile(client1, bucketName1, key1, uploadFilePath1);
			uploadFile(client2, bucketName2, key2, uploadFilePath2);
			uploadFile(client1, bucketName3, key3, uploadFilePath3);
		} catch (OSSException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		System.out.println("上傳私有...");
		try {
			uploadFile(client2, bucketName1, key1+"(上傳私有)", uploadFilePath1);		
		} catch (Exception e) {
			System.out.println(e.getMessage());//無寫入許可權,丟擲異常
		}
		
		System.out.println("上傳只讀...");
		try {
			uploadFile(client2, bucketName3, key3+"(上傳只讀)", uploadFilePath3);
		} catch (Exception e) {
			System.out.println(e.getMessage());//無寫入許可權,丟擲異常
		}
		
		System.out.println("上傳公共讀寫...");
		try {
			uploadFile(client1, bucketName2, key2+"(上傳公共讀寫)", uploadFilePath2);
		} catch (Exception e) {
			System.out.println(e.getMessage());//成功上傳,無異常
		}

		
		List<Bucket> list1 = new ArrayList<Bucket>();
		list1 = client1.listBuckets();
		System.out.println("client1:" + client1.toString());
		for (Bucket a : list1) {
			System.out.println("client1 info:" + a.toString());
		}
		
		list1 = client2.listBuckets();
		System.out.println("client2:" + client2.toString());
		for (Bucket a : list1) {
			System.out.println("client2 info:" + a.toString());
		}
		
		/*自己下載自己的*/
		System.out.println("正在下載(自己下載自己的)...");
        downloadFile(client1, bucketName1, key1, "G:/test/download/"+key1);
        downloadFile(client2, bucketName2, key2, "G:/test/download/"+key2);
        downloadFile(client1, bucketName3, key3, "G:/test/download/"+key3);
        
        /*下載私有的*/
        System.out.println("正在下載(下載私有)...");
        try {
        	downloadFile(client2, bucketName1, key1, "G:/test/download/(下載私有)"+key1);
		} catch (Exception e) {
			 System.out.println(e.getMessage());//此處會丟擲異常,無許可權下載
		}
           
        System.out.println("正在下載(下載只讀)...");
        try {
        	downloadFile(client2, bucketName3, key3, "G:/test/download/(下載只讀)"+key3);
		} catch (Exception e) {
			System.out.println(e.getMessage());//成功下載
		}
        
        
        System.out.println("正在下載(下載公共讀寫)...");
        try {
        	downloadFile(client1, bucketName2, key2, "G:/test/download/(下載公共讀寫)"+key2);
		} catch (Exception e) {
			System.out.println(e.getMessage());//成功下載
		}
		
		client1.shutdown();
		client2.shutdown();
		System.out.println("-----------------------SUCCESS----------------------");
	}

	public static void createBucket(OSSClient client, String bucketName,
			CannedAccessControlList acl) {

		/* 通過一個Bucket物件來建立 */
		CreateBucketRequest bucketObj = new CreateBucketRequest(null);// 建構函式入參為Bucket名稱,可以為空
		bucketObj.setBucketName(bucketName);// 設定bucketObj名稱
		bucketObj.setCannedACL(acl);// 設定bucketObj訪問許可權acl
		client.createBucket(bucketObj);// 建立Bucket

	}

	// 上傳檔案
	private static void uploadFile(OSSClient client, String bucketName,
			String key, String filename) throws OSSException, ClientException,
			FileNotFoundException {
		File file = new File(filename);

		ObjectMetadata objectMeta = new ObjectMetadata();
		objectMeta.setContentLength(file.length());
		// 可以在metadata中標記檔案型別
		//objectMeta.setContentType("image/jpeg");

		InputStream input = new FileInputStream(file);
		PutObjectResult rs = client.putObject(bucketName, key, input,
				objectMeta);
	}

	// 下載檔案
	private static void downloadFile(OSSClient client, String bucketName,
			String key, String filename) throws OSSException, ClientException {
		client.getObject(new GetObjectRequest(bucketName, key), new File(
				filename));
	}

}


相關推薦

OSSBucket許可權

使用者建立的Bucket總共有三種許可權: /*私有 * 只允許自己讀寫操作,其他使用者沒有許可權 */ CannedAccessControlList acl_private = CannedAccessControlList.Private; /*公共讀寫

OSS Bucket相關操作

package com.ls; import java.util.ArrayList; import java.util.List; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.Bucket;

OpenCV3視訊cv::VideoCapture和cv::VideoWriter

OpenCV3和OpenCV2類似,視訊的讀、寫操作,分別通過cv::VideoCapture和cv::VideoWriter兩個類來實現。 1、視訊的讀取操作cv::VideoCapture cv::VideoCapture既支援視訊檔案的讀取,也支

Linux磁碟 測試

一、如何檢視當前磁碟的IO使用情況 使用命令:iotop Total DISK READ: 3.89 K/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO>

QtQSettings登錄檔、配置檔案

簡述 一般情況下,我們在開發軟體過程中,都會快取一些資訊到本地,可以使用輕量級資料庫sqlite,也可以操作登錄檔、讀寫配置檔案。 關於QSettings的使用前面已經介紹過了,比較詳細,見“更多參考”,下面介紹下QSettings常用功能-讀寫登錄檔、配置檔案。 簡述 優點 讀

原創.NETExcel工具Spire.Xls使用(3)單元格控制

  前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(2)Excel檔案的控制”給大家介紹了C#使用Spire.XLS來控制Excel檔案的基本功能和相關實踐程式碼。這篇文章將重點介紹C#操作Excel檔案時,對Excel單元格的控制。   以前在使用NPOI的時候,其實印象最深的還是

原創.NETExcel工具Spire.Xls使用(1)入門介紹

  在.NET平臺,操作Excel檔案是一個非常常用的需求,目前比較常規的方法有以下幾種: 1.Office Com元件的方式:這個方式非常累人,微軟的東西總是這麼的複雜,使用起來可能非常不便,需要安裝Excel,對於伺服器,有時候還需要為配置IIS許可權。折騰人,看到很多人在群裡面使用這個東西,出現各種抓

原創.NETExcel工具Spire.Xls使用(2)Excel檔案的控制

  前一篇文章:“.NET操作Excel利器Spire.Xls使用(1)入門介紹 ”給大家介紹了Spire.XLS的基本功能和一些比較。這篇文章將重點介紹C#操作Excel檔案時,對Excel檔案本身的相關設定,全域性控制的內容。因為這也是C#讀寫Excel檔案時經常碰到的文章,也是我在使用過程中的一

原創.NETExcel工具Spire.Xls使用(4)對資料操作與控制

  Spire.Office for .NET是E-iceblue開發的一種企業級.NET Office編輯的軟體集合,包括Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等等。.NET平臺的開發人員可以使用Spire.Office for .NET輕鬆的操作含有

原創.NETExcel工具Spire.Xls使用(5)重量級的Excel圖表功能

  前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(4)對資料操作與控制”給大家介紹了Spire.XLS對資料的控制相關功能,這一篇給大家介紹Spire.XLS最大的亮點所在,C#控制Excel生成圖表。將介紹C#生成不同型別圖表的方法,並介紹Excel圖表的相關操作,如調整大小,儲存

MFCVCini檔案

可以用於載入時,讀取上一次的紀錄。 一:寫ini配置檔案: //獲取exe路徑 CString strPath; GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),M

delphitxt檔案

1. memo控制元件讀取txt memo1.Lines.LoadFromFile('E:/*/*.txt'); 2. Procedure NewTxt(FileName:String); Var F : Textfile; Begin if fileExists(Fil

轉載ReentrantReadWriteLock鎖的使用

Lock比傳統執行緒模型中的synchronized方式更加面向物件,與生活中的鎖類似,鎖本身也應該是一個物件。兩個執行緒執行的程式碼片段要實現同步互斥的效果,它們必須用同一個Lock物件。   讀寫鎖:分為讀鎖和寫鎖,多個讀鎖不互斥,讀鎖與寫鎖互斥,這是由jvm自己控制的

如何在 Android 5.0 上獲取 SD卡 的許可權

因為最近專案需要,涉及到 SD卡 的讀寫操作,然而申請 <!-- 讀寫許可權 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses

java 文件操作 生成隨機數,寫入txt,然後從txt中讀出

進行 rac 直接 生成隨機數 catch trace buffered 代碼 tac 1.把生成的隨機數寫入到文件中 1 public static void WriterFun(){ 2 //獲得路徑 3 String filep

python-inipythonini文件

clas edr print 代碼 cells order sta read param 【python-ini】python讀寫ini文件 本文實例講述了Python讀寫ini文件的方法。分享給大家供大家參考。具體如下: 比如有一個文件update.ini,裏面有這些

14華為HCIE-StorageCache鏡像&一高低水位&二盤&三策略&四機制

HCIE storage hostman ------------------------------------重要說明------------------------------------以下部分內容來網絡,部分自華為存儲官方教材具體教材內容請移步華為存儲官網進行教材下載 網絡引用內容

python技巧實用篇python檔案、jieba自定義字典

import jieba from astropy.table.np_utils import join import os import sys import jieba.posseg as p

20141227 RFID 2.4GHz 器及標籤程式碼

結構: AppDemo /* 讀寫器及標籤應用功能實現 */     RFID_2.4GHz_Reader_Demo.c // RFID的2.4G讀寫器應用程式     RFID_2.4GHz_Tag_Demo.c // RFID的2.4G標籤應用程式 READER /*

核心裡i2c client 驅動的兩種方式 --未

前文介紹了利用/dev/i2c-0在應用層完成對i2c裝置的操作,但很多時候我們還是習慣為i2c裝置在核心層編寫驅動程式。目前核心支援兩種編寫i2c驅動程式的方式。下面分別介紹這兩種方式的實現。這裡分別稱這兩種方式為“Adapter方式(LEGACY)”和“Probe方式(new style)”。(1) Ad