示例#1
0
        public static void ModifyDataJson3()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            if (resultCreateContainer)
            {
                Console.WriteLine("donmablogsample create already.");
            }


            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");



            var bbReference = cloudBlobDirectory.GetBlockBlobReference("sampleText3.json");

            var bFileInfo = cloudBlobDirectory.GetBlockBlobReference("sampleText3.json");

            bFileInfo.Properties.ContentType = "application/json; charset=utf-8";
            bFileInfo.UploadTextAsync("{\"data\":\"測試資料快照後修改\"}").GetAwaiter().GetResult();


            Console.Write("Success Change Data.");
        }
示例#2
0
        public static void CheckDataJson3Content()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            if (resultCreateContainer)
            {
                Console.WriteLine("donmablogsample create already.");
            }


            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");

            Console.WriteLine("Get File Content : TEST2/TEST21/sampleText3.json");

            var result = cloudBlobDirectory.GetBlockBlobReference("sampleText3.json").DownloadTextAsync().Result;

            Console.WriteLine("TEST2/TEST21/sampleText3.json content =>" + result);

            Console.WriteLine("IsSnapShot =>" + cloudBlobDirectory.GetBlockBlobReference("sampleText3.json").IsSnapshot);
        }
示例#3
0
        public static void RecovertDataJson3()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient    = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer = cloudBlobClient.GetContainerReference("donmablogsample");

            //建立如果不存在的話
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            Console.WriteLine("donmablogsample create already.");
            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");

            var bbReference = cloudBlobDirectory.GetBlockBlobReference("sampleText3.json");


            var res = new List <CloudBlockBlob>();

            Microsoft.WindowsAzure.Storage.Blob.BlobContinuationToken continuationToken = null;
            do
            {
                //只看 TEST2/TEST21/sampleText3.json 的快照
                var listingResult = cloudBlobContainer.ListBlobsSegmentedAsync("TEST2/TEST21/sampleText3.json", true, Microsoft.WindowsAzure.Storage.Blob.BlobListingDetails.Snapshots, 100, continuationToken, null, new Microsoft.WindowsAzure.Storage.OperationContext
                {
                }).Result;
                continuationToken = listingResult.ContinuationToken;
                res.AddRange(listingResult.Results.Select(x => (x as Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob)).ToList());
            }while (continuationToken != null);

            foreach (var r in res)
            {
                r.FetchAttributesAsync().GetAwaiter().GetResult();
                Console.WriteLine("Meta-tag:" + (r.Metadata.ContainsKey("tag") ? (r.Metadata["tag"]) : "") + "," + r.DownloadTextAsync().Result + ";" + " IsSnapShot:" + r.IsSnapshot);
            }

            //Recovery from tag:9
            //還原 tag 9 的快照
            var bFileInfo = cloudBlobDirectory.GetBlockBlobReference("sampleText3.json");

            foreach (var r in res)
            {
                if (r.IsSnapshot && r.Metadata.ContainsKey("tag"))
                {
                    if (r.Metadata["tag"] == "9")
                    {
                        var copyResult = bFileInfo.StartCopyAsync(r).Result;

                        Console.WriteLine("Copy Result:" + copyResult);
                    }
                }
            }
        }
示例#4
0
        public static void GetFileUri()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            Console.WriteLine("donmablogsample create already.");

            // 設定可以開啟 60 秒,並且此簽章只能夠讀取
            var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy()
            {
                SharedAccessExpiryTime = DateTime.UtcNow.AddSeconds(60),
                Permissions            = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read,
            };


            var sasContainerToken = cloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null);

            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");
            var uri = cloudBlobDirectory.GetBlockBlobReference("sampleText9.json").Uri;


            Console.WriteLine("TEST2/TEST21/sampleText9.json Download Uri =>" + uri + sasContainerToken);

            //這一行非必要 ,呼叫系統瀏覽器開始網址而已
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("cmd", $"/c start " + uri + sasContainerToken.Replace("&", "^&"))
            {
                CreateNoWindow = true
            });
        }
示例#5
0
        public static void GetFileInfo()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;


            Console.WriteLine("donmablogsample create already.");



            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/IMAGES/");

            Console.WriteLine("Get File Content : TEST2/TEST21/IMAGES/hamimelon.jpg");

            var blockReference = cloudBlobDirectory.GetBlockBlobReference("hamimelon.jpg");

            blockReference.FetchAttributesAsync().GetAwaiter().GetResult();

            Console.WriteLine(" TEST2/TEST21/IMAGES/hamimelon.jpg Size =>" + blockReference.Properties.Length.ToString("#,##0") + "bytes");
            Console.WriteLine(" TEST2/TEST21/IMAGES/hamimelon.jpg ContentType =>" + blockReference.Properties.ContentType);
            Console.WriteLine(" TEST2/TEST21/IMAGES/hamimelon.jpg Created =>" + blockReference.Properties.Created.Value.ToString("yyyy-MM-dd HH:mm:ss"));
            Console.WriteLine(" TEST2/TEST21/IMAGES/hamimelon.jpg LastModified =>" + blockReference.Properties.LastModified.Value.ToString("yyyy-MM-dd HH:mm:ss"));
        }
示例#6
0
        public static void CreateSnapshot()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            if (resultCreateContainer)
            {
                Console.WriteLine("donmablogsample create already.");
            }


            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");


            for (var i = 1; i <= 10; i++)
            {
                var bFileInfo = cloudBlobDirectory.GetBlockBlobReference("sampleText3.json");

                bFileInfo.Properties.ContentType = "application/json; charset=utf-8";
                bFileInfo.UploadTextAsync("{\"data\":\"測試資料修改" + i + "\"}").GetAwaiter().GetResult();
                var meta = new Dictionary <string, string>();
                meta.Add("tag", i.ToString());
                var result = bFileInfo.CreateSnapshotAsync(meta, null, null, null).Result;
            }

            Console.Write("Success");
        }
示例#7
0
        public static void CheckFileExisted()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            Console.WriteLine("donmablogsample create already.");


            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");

            //Existed : true
            Console.WriteLine("TEST2/TEST21/sampleText1.json is Existed =>" + cloudBlobDirectory.GetBlockBlobReference("sampleText1.json").ExistsAsync().Result);

            //Existed : false
            Console.WriteLine("TEST2/TEST21/FileNotExisted.json is Existed =>" + cloudBlobDirectory.GetBlockBlobReference("FileNotExisted.json").ExistsAsync().Result);
        }
示例#8
0
        public static void UploadImage()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            Console.WriteLine("donmablogsample create already.");



            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/IMAGES/");

            cloudBlobDirectory.GetBlockBlobReference("hamimelon.jpg").UploadFromFileAsync(AppDomain.CurrentDomain.BaseDirectory + "sample.jpg").GetAwaiter().GetResult();

            Console.WriteLine("Upload Success");

            //開啟連結
            Console.WriteLine();

            var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy()
            {
                SharedAccessExpiryTime = DateTime.UtcNow.AddSeconds(60),
                Permissions            = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read,
            };

            var sasContainerToken = cloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null);
            var uri = cloudBlobDirectory.GetBlockBlobReference("hamimelon.jpg").Uri;

            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("cmd", $"/c start " + uri + sasContainerToken.Replace("&", "^&"))
            {
                CreateNoWindow = true
            });
        }
        private void PrefixEscapingTest(string prefix, string blobName)
        {
            CloudBlobClient    service   = GenerateCloudBlobClient();
            CloudBlobContainer container = GetRandomContainerReference();

            try
            {
                container.Create();
                string text = Guid.NewGuid().ToString();

                // Create from CloudBlobContainer.
                CloudBlockBlob originalBlob = container.GetBlockBlobReference(prefix + "/" + blobName);
                originalBlob.PutBlockList(new string[] { });

                // List blobs from container.
                IListBlobItem blobFromContainerListingBlobs = container.ListBlobs(null, true).First();
                Assert.AreEqual(originalBlob.Uri, blobFromContainerListingBlobs.Uri);

                CloudBlockBlob uriBlob = new CloudBlockBlob(originalBlob.Uri, service.Credentials);

                // Check Name
                Assert.AreEqual <string>(prefix + "/" + blobName, originalBlob.Name);
                Assert.AreEqual <string>(prefix + "/" + blobName, uriBlob.Name);

                // Absolute URI access from CloudBlockBlob
                CloudBlockBlob blobInfo = new CloudBlockBlob(originalBlob.Uri, service.Credentials);
                blobInfo.FetchAttributes();

                // Access from CloudBlobDirectory
                CloudBlobDirectory cloudBlobDirectory         = container.GetDirectoryReference(prefix);
                CloudBlockBlob     blobFromCloudBlobDirectory = cloudBlobDirectory.GetBlockBlobReference(blobName);
                Assert.AreEqual(blobInfo.Uri, blobFromCloudBlobDirectory.Uri);

                // Copy blob verification.
                CloudBlockBlob copyBlob = container.GetBlockBlobReference(prefix + "/" + blobName + "copy");
                copyBlob.StartCopyFromBlob(blobInfo.Uri);
                copyBlob.FetchAttributes();
            }
            finally
            {
                container.Delete();
            }
        }
示例#10
0
        public static void CreateBlobDirectory()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            //Check Contain is Existed.
            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            //取得該檔案夾 TEST
            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST");

            //在該檔案夾下面建立檔案
            var bFileInfo = cloudBlobDirectory.GetBlockBlobReference("sampleText.json");

            bFileInfo.Properties.ContentType = "application/json; charset=utf-8";
            bFileInfo.UploadTextAsync("{\"data\":\"測試資料\"}").GetAwaiter().GetResult();

            Console.WriteLine("Success Update File TEST/sampleText.json");
        }
示例#11
0
        public static void CreateBlobDirectory2()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            Console.WriteLine("donmablogsample create already.");


            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");

            for (var i = 1; i <= 10; i++)
            {
                var bFileInfo = cloudBlobDirectory.GetBlockBlobReference("sampleText" + i + ".json");
                bFileInfo.Properties.ContentType = "application/json; charset=utf-8";
                bFileInfo.UploadTextAsync("{\"data\":\"測試資料" + i + "\"}").GetAwaiter().GetResult();
                Console.WriteLine("Success Add File TEST2/TEST21/sampleText" + i + ".json");
            }
        }
示例#12
0
        public static void DeleteFile()
        {
            var cloudStorage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(connsctionString);

            var cloudBlobClient       = cloudStorage.CreateCloudBlobClient();
            var cloudBlobContainer    = cloudBlobClient.GetContainerReference("donmablogsample");
            var resultCreateContainer = cloudBlobContainer.CreateIfNotExistsAsync().Result;

            Console.WriteLine("donmablogsample create already.");


            //取得 TEST2/TEST21/ 目錄
            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                cloudBlobContainer.GetDirectoryReference("TEST2/TEST21/");

            Console.WriteLine("Delete File : TEST2/TEST21/sampleText8.json");
            // 如果存在就刪除,如果只是單純使用 DeleteAsync 如果不存在 會 Exception
            // 如果檔案存在被刪除, result 才會為  true , 如果檔案不存在 則 result 為  false
            var result = cloudBlobDirectory.GetBlockBlobReference("sampleText8.json").DeleteIfExistsAsync().GetAwaiter().GetResult();

            Console.WriteLine(result);
        }
 private static CloudBlockBlob GetTempBlob(CloudBlobDirectory directory)
 {
     return directory.GetBlockBlobReference(TempFileName);
 }
示例#14
0
 private static Task DeleteDirectory(CloudBlobDirectory directory)
 {
     return directory.GetBlockBlobReference("blob").DeleteAsync();
 }