Пример #1
0
    public static DownloadResult DownloadObject(DownloadRecord record, String targetFolder, long start = 0, long end = 199)
    {
        GetObjectRequest getObjectRequest = new GetObjectRequest()
        {
            BucketName = BosConfig.BucketName, Key = record.CloudFile.Key
        };

        // 获取 范围内的数据
        getObjectRequest.SetRange(start, end);

        // 获取Object,返回结果为BosObject对象
        try {
            BosObject bosObject = GetBosClient().GetObject(getObjectRequest);

            Stream stream = bosObject.ObjectContent;

            return(FileUtil.saveFileContent(stream, record.FileName, targetFolder));
        } catch (BceServiceException BceServiceException) {
            if (BceServiceException.Message.IndexOf("The requested range cannot be satisfied") != -1)
            {
                DownloadResult result2 = new DownloadResult();
                result2.state = 1;
                return(result2);
            }
            Console.WriteLine("exception:" + BceServiceException);
        }
        DownloadResult result = new DownloadResult();

        result.state = 2;
        return(result);
    }
Пример #2
0
            public void TestGetRange()
            {
                string path = "put_object_ordinary.txt";

                File.WriteAllText(path, "data");
                FileInfo         fileInfo = new FileInfo(path);
                string           key      = "te%%st  ";
                PutObjectRequest request  = new PutObjectRequest()
                {
                    BucketName = this.bucketName,
                    Key        = key,
                    FileInfo   = fileInfo
                };

                this.client.PutObject(request);
                GetObjectRequest getObjectRequest = new GetObjectRequest()
                {
                    BucketName = this.bucketName, Key = key
                };

                getObjectRequest.SetRange(0, 0);
                BosObject bosObject = this.client.GetObject(getObjectRequest);
                String    content   =
                    Encoding.Default.GetString(IOUtils.StreamToBytes(bosObject.ObjectContent,
                                                                     bosObject.ObjectMetadata.ContentLength, 8192));

                Assert.AreEqual(content, "d");
            }
Пример #3
0
        public BosObject GetObject(String bucketName, String objKey)
        {
            BosClient client = GenerateBosClient();
            BosObject obj    = client.GetObject(bucketName, objKey);

            return(obj);
        }
Пример #4
0
            public void TestGetIAOk()
            {
                string path = "put_object_ordinary.txt";

                File.WriteAllText(path, "data");
                FileInfo fileInfo = new FileInfo(path);
                string   key      = "te%%st  ";
                var      meta     = new ObjectMetadata();

                meta.StorageClass = BosConstants.StorageClass.StandardInfrequentAccess;
                PutObjectRequest request = new PutObjectRequest()
                {
                    BucketName     = this.bucketName,
                    Key            = key,
                    FileInfo       = fileInfo,
                    ObjectMetadata = meta
                };
                String eTag = this.client.PutObject(request).ETAG;

                Assert.AreEqual(eTag, HashUtils.ComputeMD5Hash(fileInfo));
                BosObject bosObject = this.client.GetObject(this.bucketName, key);
                String    content   =
                    Encoding.Default.GetString(IOUtils.StreamToBytes(bosObject.ObjectContent,
                                                                     bosObject.ObjectMetadata.ContentLength, 8192));

                Assert.AreEqual(content, "data");
                Assert.AreEqual(BosConstants.StorageClass.StandardInfrequentAccess,
                                bosObject.ObjectMetadata.StorageClass);
            }
Пример #5
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);
        }
Пример #6
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();
        }
Пример #7
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);
        }
Пример #8
0
            public void TestOrdinary()
            {
                string path = "put_object_ordinary.txt";

                File.WriteAllText(path, "data");
                FileInfo         fileInfo = new FileInfo(path);
                string           key      = "te%%st  ";
                PutObjectRequest request  = new PutObjectRequest()
                {
                    BucketName = this.bucketName,
                    Key        = key,
                    FileInfo   = fileInfo
                };
                String eTag = this.client.PutObject(request).ETAG;

                Assert.AreEqual(eTag, HashUtils.ComputeMD5Hash(fileInfo));
                BosObject bosObject = this.client.GetObject(this.bucketName, key);
                String    content   =
                    Encoding.Default.GetString(IOUtils.StreamToBytes(bosObject.ObjectContent,
                                                                     bosObject.ObjectMetadata.ContentLength, 8192));

                Assert.AreEqual(content, "data");
            }
Пример #9
0
 public void Write()
 {
     BosClient client = GenerateBosClient();
     BosObject obj    = client.GetObject("", "");
     // obj.ObjectContent
 }