Example #1
0
        public BosObject GetObject(String bucketName, String objKey)
        {
            BosClient client = GenerateBosClient();
            BosObject obj    = client.GetObject(bucketName, objKey);

            return(obj);
        }
Example #2
0
            public void TestCleanup()
            {
                this.client = new BosClient(this.config);
                List <BucketSummary> buckets = this.client.ListBuckets().Buckets;

                if (buckets == null || buckets.Count == 0)
                {
                    return;
                }
                foreach (BucketSummary bucket in buckets)
                {
                    string bucketName = bucket.Name;
                    if (bucketName.StartsWith("ut"))
                    {
                        ListObjectsResponse     listObjectsResponse = this.client.ListObjects(bucketName);
                        List <BosObjectSummary> objects             = listObjectsResponse.Contents;
                        if (objects != null && objects.Count > 0)
                        {
                            foreach (BosObjectSummary bosObject in objects)
                            {
                                String key = bosObject.Key;
                                this.client.DeleteObject(bucketName, key);
                            }
                        }
                        this.client.DeleteBucket(bucket.Name);
                    }
                }
            }
Example #3
0
        public String getFileUrl(String bucketName, String objKey)
        {
            BosClient client = GenerateBosClient();
            Uri       uri    = client.GeneratePresignedUrl(bucketName, objKey, 30);

            return(uri.AbsoluteUri);
        }
Example #4
0
        /// <summary>
        /// 判断bucket是否存在
        /// </summary>
        /// <param name="bucketName"></param>
        /// <returns></returns>
        public Boolean checkBucketExist(String bucketName)
        {
            BosClient client = GenerateBosClient();
            bool      exists = client.DoesBucketExist(bucketName);

            return(exists);
        }
Example #5
0
        /// <summary>
        /// 获得bucket下所有文件夹信息
        /// </summary>
        /// <param name="bucketName"></param>
        /// <returns></returns>
        public List <ObjectPrefix> getFoldersList(String bucketName)
        {
            BosClient           client     = GenerateBosClient();
            List <ObjectPrefix> folderList = client.ListObjects(bucketName).CommonPrefixes;

            return(folderList);
        }
Example #6
0
        public ListObjectsResponse getAllObjectsList(String bucketName, String path)
        {
            BosClient           client  = GenerateBosClient();
            ListObjectsResponse objects = client.ListObjects(bucketName, path);

            return(objects);
        }
Example #7
0
        /// <summary>
        /// 取得某个存储bucket下所有的文件信息,不包含文件夹
        /// </summary>
        /// <param name="bucketName"></param>
        /// <returns></returns>
        public List <BosObjectSummary> getObjectsList(String bucketName)
        {
            BosClient client = GenerateBosClient();
            List <BosObjectSummary> objects = client.ListObjects(bucketName).Contents;

            return(objects);
        }
        private static void Main(string[] args)
        {
            BosClient    client     = GenerateBosClient();
            const string bucketName = "sample-bucket-getobjecturl"; //示例Bucket名称

            // 初始化:创建示例Bucket和Object
            client.CreateBucket(bucketName); //指定Bucket名称
            string objectName = "sample";

            client.PutObject(bucketName, objectName, "sampledata");

            // 生成url,并通过该url直接下载和打印对象内容
            string url = client.GeneratePresignedUrl(bucketName, objectName, 60).ToString();

            using (WebClient webClient = new WebClient())
            {
                using (Stream stream = webClient.OpenRead(url))
                    using (StreamReader streamReader = new StreamReader(stream))
                    {
                        string response = streamReader.ReadToEnd();
                        Console.WriteLine(response); // "sampledata"
                    }
            }

            Console.ReadKey();
        }
Example #9
0
 public static Task DeleteObjectsAsync(this BosClient bosClient, string bucketName, params string[] objects)
 {
     return(Task.Run(() => { foreach (var objectKey in objects)
                             {
                                 bosClient.DeleteObject(bucketName, objectKey);
                             }
                     }));
 }
Example #10
0
        /// <summary>
        /// 获取现有的bucket列表
        /// </summary>
        /// <returns></returns>
        public List <BucketSummary> getBucketList()
        {
            BosClient client = GenerateBosClient();
            // 获取用户的Bucket列表
            List <BucketSummary> buckets = client.ListBuckets().Buckets;

            return(buckets);
        }
Example #11
0
        public ObjectMetaDataForm(BosClient bosClient, string bucketName, string objectKey)
        {
            bosClient_ = bosClient;
            bucket_    = bucketName;
            objectKey_ = objectKey;

            InitializeComponent();
        }
Example #12
0
        /// <summary>
        /// 创建文件夹
        /// </summary>
        /// <param name="bucketName"></param>
        /// <param name="path"></param>
        /// <param name="folderName"></param>
        /// <returns></returns>
        public bool CreateFolder(String bucketName, String path, String folderName)
        {
            path = path + folderName + "/";
            BosClient         client = this.GenerateBosClient();
            PutObjectResponse putObjectFromFileResponse =
                client.PutObject(bucketName, path, "");

            return(true);
        }
Example #13
0
        public bool uploadFile(String filePath, String bucketName, String path)
        {
            BosClient         client   = GenerateBosClient();
            FileInfo          fileInfo = new FileInfo(filePath);
            String            fileName = fileInfo.Name;
            PutObjectResponse putObjectFromFileResponse =
                client.PutObject(bucketName, fileName, new FileInfo(filePath));

            return(true);
        }
Example #14
0
 /**
  *
  * 获取单例的BOS服务的客户端
  *
  * */
 public static BosClient GetBosClient()
 {
     lock (BceClientConfiguration_Lock)
     {
         if (BosClient == null)
         {
             BosClient = new BosClient(GetBceClientConfiguration());
         }
     }
     return(BosClient);
 }
Example #15
0
 public bool CutFile(String bucketName, String sourceKey, String targetPath)
 {
     try
     {
         BosClient client = this.GenerateBosClient();
         //当是文件的时候
         if (sourceKey.EndsWith(this.delimter))
         {
             String filter = sourceKey.Substring(0, sourceKey.Length - 1);
             if (filter.IndexOf(this.delimter) >= 0)
             {
                 filter = sourceKey.Substring(0, filter.IndexOf(this.delimter)) + this.delimter;
             }
             else
             {
                 filter = String.Empty;
             }
             ListObjectsResponse response = client.ListObjects(bucketName, sourceKey);
             foreach (BosObjectSummary obj in response.Contents)
             {
                 String key    = obj.Key;
                 String newKey = "";
                 if (filter.Length == 0)
                 {
                     newKey = targetPath + key;
                 }
                 else
                 {
                     newKey = targetPath + key.Replace(filter, "");
                 }
                 client.CopyObject(bucketName, key, bucketName, newKey);
                 client.DeleteObject(bucketName, key);
             }
         }
         else
         {
             String fileName = sourceKey;
             if (sourceKey.IndexOf(this.delimter) >= 0)
             {
                 fileName = sourceKey.Substring(sourceKey.IndexOf(this.delimter));
             }
             String newKey = targetPath + fileName;
             client.CopyObject(bucketName, sourceKey, bucketName, newKey);
             client.DeleteObject(bucketName, sourceKey);
         }
         // client.CopyObject();
         return(true);
     }
     catch (Exception)
     {
         throw;
     }
 }
 public BosOpenStorageService(OssConfig config)
 {
     if (config == null)
     {
         throw new ArgumentNullException("config can not be null!");
     }
     _ossConfig                       = config;
     _clientConfiguration             = new BceClientConfiguration();
     _clientConfiguration.Credentials = new DefaultBceCredentials(config.AccessID, config.AccessKey);
     _clientConfiguration.Endpoint    = config.EndPoint;
     _bosClient                       = new BosClient(_clientConfiguration);
 }
Example #17
0
        /// <summary>
        /// 获取路径下的文件列表,包含文件和文件夹
        /// </summary>
        /// <param name="bucketName">存储的bucketName</param>
        /// <param name="filter">path。路径</param>
        /// <returns></returns>
        public ListObjectsResponse getObjectsList(String bucketName, String path)
        {
            BosClient          client             = GenerateBosClient();
            ListObjectsRequest listObjectsRequest = new ListObjectsRequest();

            listObjectsRequest.BucketName = bucketName;
            listObjectsRequest.Delimiter  = delimter;
            listObjectsRequest.Prefix     = path;
            ListObjectsResponse response = client.ListObjects(listObjectsRequest);

            return(response);
        }
Example #18
0
        public String readTxtFile(String bucketName, String objKey)
        {
            BosClient    client = GenerateBosClient();
            BosObject    obj    = client.GetObject(bucketName, objKey);
            Stream       stream = obj.ObjectContent;
            StreamReader reader = new StreamReader(stream);
            String       str    = reader.ReadToEnd();

            reader.Close();
            stream.Close();
            return(str);
        }
Example #19
0
        public bool Download1(String bucketName, String key, String fileName, String path)
        {
            // 新建GetObjectRequest
            GetObjectRequest getObjectRequest = new GetObjectRequest()
            {
                BucketName = bucketName, Key = key
            };
            BosClient client = this.GenerateBosClient();
            // 下载Object到文件
            ObjectMetadata objectMetadata = client.GetObject(getObjectRequest, new FileInfo(path + "/" + fileName));

            return(true);
        }
Example #20
0
        /// <summary>
        /// 判断文件或文件夹是否存在
        /// </summary>
        /// <param name="bucketName"></param>
        /// <param name="objKey"></param>
        /// <returns></returns>
        public Boolean CheckObjExist(String bucketName, String objKey)
        {
            BosClient           client = GenerateBosClient();
            ListObjectsResponse objs   = client.ListObjects(bucketName, objKey);

            if (objs.Contents.Count == 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Example #21
0
        public static Task <List <BosObjectSummary> > GetObjectsAsync(this BosClient bosClient, string bucket, string prefix, string delimiter = "")
        {
            return(Task.Run(
                       () =>
            {
                var listObjectsRequest = new ListObjectsRequest {
                    BucketName = bucket
                };
                listObjectsRequest.Prefix = prefix;
                listObjectsRequest.Delimiter = delimiter;

                return bosClient.ListObjects(listObjectsRequest).Contents;
            }));
        }
Example #22
0
        private static void Main(string[] args)
        {
            BosClient    client     = GenerateBosClient();
            const string bucketName = "sample-bucket-deleteobject"; //示例Bucket名称

            // 初始化:创建示例Bucket和Object
            client.CreateBucket(bucketName); //指定Bucket名称
            string objectName = "sample";

            client.PutObject(bucketName, objectName, "sampledata");

            // 删除Object
            client.DeleteObject(bucketName, objectName);
        }
Example #23
0
        private static void Main(string[] args)
        {
            BosClient    client     = GenerateBosClient();
            const string bucketName = "sample-bucket-getobject"; //示例Bucket名称

            // 初始化:创建示例Bucket和Object
            client.CreateBucket(bucketName); //指定Bucket名称
            string objectName = "sample";

            client.PutObject(bucketName, objectName, "sampledata");

            // 1. 获取BosObject对象并通过BosObject的输入流获取内容
            BosObject bosObject     = client.GetObject(bucketName, objectName);
            Stream    objectContent = bosObject.ObjectContent;
            string    content       = new StreamReader(objectContent).ReadToEnd();

            Console.WriteLine(content); // "sampledata"

            // 2. 通过GetObjectRequest只获取部分数据
            GetObjectRequest getObjectRequest = new GetObjectRequest()
            {
                BucketName = bucketName, Key = objectName
            };

            getObjectRequest.SetRange(0, 5);
            bosObject     = client.GetObject(getObjectRequest);
            objectContent = bosObject.ObjectContent;
            content       = new StreamReader(objectContent).ReadToEnd();
            Console.WriteLine(content); // "sample"

            // 3. 直接通过GetObjectContent获取byte[]内容
            byte[] bytes = client.GetObjectContent(bucketName, objectName);
            content = Encoding.Default.GetString(bytes);
            Console.WriteLine(content); // "sampledata"

            // 4. 将object内容下载到文件
            FileInfo fileInfo = new FileInfo("d:\\lzb\\sample.txt");

            client.GetObject(bucketName, objectName, fileInfo);
            content = File.ReadAllText(fileInfo.FullName);
            Console.WriteLine(content); // "sampledata"

            // 5. 只获取object的meta,不获取内容
            ObjectMetadata objectMetadata = client.GetObjectMetadata(bucketName, objectName);

            Console.WriteLine(objectMetadata.ContentLength); // "10"

            Console.ReadKey();
        }
Example #24
0
        /// <summary>
        /// 创建Bucket
        /// </summary>
        /// <param name="bucketName"></param>
        /// <returns></returns>
        public Boolean CreateBucket(String bucketName)
        {
            BosClient client = GenerateBosClient();
            bool      exists = client.DoesBucketExist(bucketName);

            if (exists)
            {
                throw new Exception("待创建的[ " + bucketName + " ]已经存在!");
            }
            else
            {
                client.CreateBucket(bucketName);
                return(true);
            }
        }
Example #25
0
        public void RemoveAllMultiUploads(String bucketName)
        {
            BosClient client = this.GenerateBosClient();
            ListMultipartUploadsResponse list = client.ListMultipartUploads(bucketName);

            foreach (MultipartUploadSummary summary in list.Uploads)
            {
                String uploadID = summary.UploadId;
                String key      = summary.Key;
                String name     = summary.Owner.DisplayName;

                client.AbortMultipartUpload(bucketName, key, uploadID);
                String sss = "";
            }
        }
Example #26
0
            public void TestPublicReadWrite()
            {
                string objectKey = "objectPublicReadWrite";
                string data      = "dataPublicReadWrite";

                this.client.SetBucketAcl(this.bucketName, BosConstants.CannedAcl.PublicReadWrite);
                GetBucketAclResponse response = this.client.GetBucketAcl(this.bucketName);

                Assert.AreEqual(response.Owner.Id, this.grantee.Id);

                List <Grant>   grants       = new List <Grant>();
                List <Grantee> granteeOwner = new List <Grantee>();

                granteeOwner.Add(this.grantee);
                List <string> permissionOwner = new List <string>();

                permissionOwner.Add(BosConstants.Permission.FullControl);
                grants.Add(new Grant()
                {
                    Grantee = granteeOwner, Permission = permissionOwner
                });
                List <Grantee> granteeAnonymous = new List <Grantee>();

                granteeAnonymous.Add(this.anonymous);
                List <string> permissionAnonymous = new List <string>();

                permissionAnonymous.Add(BosConstants.Permission.Read);
                permissionAnonymous.Add(BosConstants.Permission.Write);
                grants.Add(new Grant()
                {
                    Grantee = granteeAnonymous, Permission = permissionAnonymous
                });

                Assert.AreEqual(response.AccessControlList.Count, grants.Count);
                this.client.PutObject(this.bucketName, objectKey, data);
                BceClientConfiguration bceClientConfiguration = new BceClientConfiguration();

                bceClientConfiguration.Endpoint = this.endpoint;
                BosClient bosAnonymous = new BosClient(bceClientConfiguration);

                Assert.AreEqual(
                    Encoding.Default.GetString(bosAnonymous.GetObjectContent(this.bucketName, objectKey)), data);

                bosAnonymous.PutObject(this.bucketName, "anonymous", "dataAnonymous");
                Assert.AreEqual(
                    Encoding.Default.GetString(bosAnonymous.GetObjectContent(this.bucketName, "anonymous")),
                    "dataAnonymous");
            }
        /// <summary>
        /// 上传指定文件到百度云BOS。
        /// </summary>
        /// <param name="file">待上传的文件</param>
        /// <param name="suffix">文件在云空间里的后缀</param>
        /// <exception cref="Exception"/>
        public Task Upload(string file, string suffix)
        {
            BceClientConfiguration config = new BceClientConfiguration();

            config.Credentials = new DefaultBceCredentials(id, key);
            config.Endpoint    = endpoint;
            if (timeout > 0)
            {
                config.ReadWriteTimeoutInMillis = timeout;
            }

            BosClient client = new BosClient(config);

            client.PutObject(bucket, path + suffix, new FileInfo(file));
            return(Task.CompletedTask);
        }
Example #28
0
        private static void Main(string[] args)
        {
            BosClient    client     = GenerateBosClient();
            const string bucketName = "sample-bucket"; //示例Bucket名称

            // 新建一个Bucket
            client.CreateBucket(bucketName); //指定Bucket名称


            // 设置Bucket为Private
            client.SetBucketAcl(bucketName, BosConstants.CannedAcl.Private);

            // 设置Bucket为PublicRead
            client.SetBucketAcl(bucketName, BosConstants.CannedAcl.PublicRead);

            List <Grant>   grants     = new List <Grant>();
            List <Grantee> grantee    = new List <Grantee>();
            List <string>  permission = new List <string>();

            //授权给特定用户
            grantee.Add(new Grantee()
            {
                Id = "userid1"
            });
            grantee.Add(new Grantee()
            {
                Id = "userid2"
            });
            //授权给Everyone
            grantee.Add(new Grantee()
            {
                Id = "*"
            });

            //设置权限
            permission.Add(BosConstants.Permission.Read);
            permission.Add(BosConstants.Permission.Write);

            grants.Add(new Grant()
            {
                Grantee = grantee, Permission = permission
            });
            client.SetBucketAcl(new SetBucketAclRequest()
            {
                BucketName = bucketName, AccessControlList = grants
            });
        }
Example #29
0
        private static void Main(string[] args)
        {
            BosClient    client           = GenerateBosClient();
            const string bucketName       = "sample-bucket-putobject993";     //示例Bucket名称
            const string objectNameFile   = "sample-bucket-putobject-file";   //file上传的object名称
            const string objectNameStream = "sample-bucket-putobject-stream"; //stream上传的object名称
            const string objectNameString = "sample-bucket-putobject-string"; //string上传的object名称
            const string objectNameByte   = "sample-bucket-putobject-byte";   //byte上传的object名称

            // 新建一个Bucket
            client.CreateBucket(bucketName); //指定Bucket名称

            // 设置待上传的文件名,例如d:\\sample.txt
            const string fileName = "your file and path";

            // 以文件形式上传Object
            PutObjectResponse putObjectFromFileResponse = client.PutObject(bucketName, objectNameFile,
                                                                           new FileInfo(fileName));
            // 以数据流形式上传Object
            PutObjectResponse putObjectResponseFromInputStream = client.PutObject(bucketName, objectNameStream,
                                                                                  new FileInfo(fileName).OpenRead());
            // 以二进制串上传Object
            PutObjectResponse putObjectResponseFromByte = client.PutObject(bucketName, objectNameByte,
                                                                           Encoding.Default.GetBytes("sampledata"));
            // 以字符串上传Object
            PutObjectResponse putObjectResponseFromString = client.PutObject(bucketName, objectNameString,
                                                                             "sampledata");

            // 打印四种方式的ETag---演示例子中,文件方式和stream方式的ETag相等,string方式和byte方式的ETag相等
            Console.WriteLine(putObjectFromFileResponse.ETAG);
            Console.WriteLine(putObjectResponseFromInputStream.ETAG);
            Console.WriteLine(putObjectResponseFromByte.ETAG);
            Console.WriteLine(putObjectResponseFromString.ETAG);

            // 上传Object并设置自定义参数
            ObjectMetadata meta = new ObjectMetadata();

            // 设置ContentLength大小
            meta.ContentLength = 10;
            // 设置ContentType
            meta.ContentType = "application/json";
            // 设置自定义元数据name的值为my-data
            meta.UserMetadata["name"] = "my-data";
            // 上传Object并打印ETag
            putObjectResponseFromString = client.PutObject(bucketName, objectNameString, "sampledata", meta);
            Console.WriteLine(putObjectResponseFromString.ETAG);
        }
Example #30
0
        private static void Main(string[] args)
        {
            BosClient    client     = GenerateBosClient();
            const string bucketName = "sample-base";   //示例Bucket名称
            const string objectKey  = "sample-object"; //示例object名称

            //创建Bucket
            client.CreateBucket(bucketName);

            //上传Object
            FileInfo          file = new FileInfo("d:\\lzb\\sample.txt"); //上传文件的目录
            PutObjectResponse putObjectFromFileResponse = client.PutObject(bucketName, objectKey, file);

            Console.WriteLine(putObjectFromFileResponse.ETAG);

            //查看Object
            ListObjectsResponse listObjectsResponse = client.ListObjects(bucketName);

            foreach (BosObjectSummary objectSummary in listObjectsResponse.Contents)
            {
                Console.WriteLine("ObjectKey: " + objectSummary.Key);
            }

            // 获取Object
            BosObject bosObject = client.GetObject(bucketName, objectKey);
            // 获取ObjectMeta
            ObjectMetadata meta = bosObject.ObjectMetadata;
            // 获取Object的输入流
            Stream objectContent = bosObject.ObjectContent;
            // 处理Object
            FileStream fileStream = new FileInfo("d:\\lzb\\sampleout.txt").OpenWrite(); //下载文件的目录/文件名

            byte[] buffer = new byte[2048];
            int    count  = 0;

            while ((count = objectContent.Read(buffer, 0, buffer.Length)) > 0)
            {
                fileStream.Write(buffer, 0, count);
            }

            // 关闭流
            objectContent.Close();
            fileStream.Close();
            Console.WriteLine(meta.ETag);
            Console.WriteLine(meta.ContentLength);
        }