﻿
{"id":16906,"date":"2020-07-30T22:41:56","date_gmt":"2020-07-30T22:41:56","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=16906"},"modified":"2020-07-30T22:44:57","modified_gmt":"2020-07-30T22:44:57","slug":"azure-storage-serisi-7-azure-blob-storage-ve-asp-net-core-ile-kullanimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/azure-storage-serisi-7-azure-blob-storage-ve-asp-net-core-ile-kullanimi\/","title":{"rendered":"Azure Storage Serisi #7 &#8211; Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-storage-yazi-dizisi\/\" target=\"_blank\" rel=\"noopener noreferrer\">Azure Storage Yaz\u0131 Dizisi<\/a>nin bu yedinci makalesinde Azure Blob Storage&#8217;dan bahsedecek ve Asp.NET Core \u00fczerinde nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h3 style=\"color: #e83e8c;\">Azure Blob Storage Nedir?<\/h3>\n<p>Azure Blob Storage, Microsoft&#8217;un bulut i\u00e7in dosya depolama servisidir. PDF, Image, MP3 vs. gibi farkl\u0131 t\u00fcrdeki t\u00fcm dosyalar binary t\u00fcrde blob storage&#8217;a kaydedilebilir.<\/p>\n<h3 style=\"color: #e83e8c;\">Azure Blob Storage Neden Tercih Etmeliyiz?<\/h3>\n<p>Azure Blob Storage&#8217;\u0131 a\u015fa\u011f\u0131daki durumlarda tercih edebilirsiniz.<\/p>\n<ul>\n<li>Dosyalar\u0131 do\u011frudan bulutta tutmak i\u00e7in,<\/li>\n<li>Video ve ses streamleri olu\u015fturabilmek i\u00e7in,<\/li>\n<li>Verileri yedekleme ve ola\u011fan\u00fcst\u00fc durumlara istinaden geri y\u00fckleme, kurtarma yahut ar\u015fivlemek i\u00e7in,<\/li>\n<li>Yap\u0131lan analiz \u00e7al\u0131\u015fmalar\u0131nda veri dopalama i\u00e7in&#8230;<\/li>\n<\/ul>\n<p>T\u00fcm bunlara istinaden Blob Storage, birden fazla instance olarak aya\u011fa kald\u0131r\u0131lan uygulamalarda dosyalar\u0131 tek bir yerde depolamak ve b\u00f6ylece scale(\u00f6l\u00e7eklendirebilmek) edebilmek i\u00e7in kullan\u0131lmaktad\u0131r. B\u00f6ylece dosyalar\u0131n merkezi olmas\u0131n\u0131 sa\u011flamakta ve y\u00f6netilebilirlik seviyesi olduk\u00e7a artt\u0131r\u0131lmaktad\u0131r.<\/p>\n<p>Misal, Docker gibi sanalla\u015ft\u0131rma ortamlar\u0131nda dosyalar\u0131n tutulabilmesi i\u00e7in merkezi bir ortak nokta ayarlanabilmektedir. <span style=\"font-size: 10px;\">Bknz : <a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-core-docker-yazi-dizisi\/\" target=\"_blank\" rel=\"noopener noreferrer\">.NET Core &amp; Docker Yaz\u0131 Dizisi<\/a><\/span> Lakin Docker d\u0131\u015f\u0131 durumlarda Blob storage hayat kurtaran bir \u00e7\u00f6z\u00fcm sunmakta ve dosyalar\u0131 ortak bir havuzda toplayabilmek i\u00e7in ekstradan kopyalama i\u015flemlerine vs. gerek kalmaks\u0131z\u0131n daha efektif bir s\u00fcre\u00e7 sergilememizi sa\u011flamaktad\u0131r.<\/p>\n<h3 style=\"color: #e83e8c;\">Azure Blob Storage Kavramlar\u0131 Nelerdir?<\/h3>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-16912\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.png\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"331\" height=\"111\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.png 331w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-300x101.png 300w\" sizes=\"auto, (max-width: 331px) 100vw, 331px\" \/><\/a><br \/>\nKavramsal a\u00e7\u0131dan Blob; jpg, png, avi, mp3 vs. gibi herhangi bir uzant\u0131l\u0131 dosyay\u0131 tarif eden bir terimdir. Azure taraf\u0131nda dosya uzant\u0131s\u0131n\u0131n hi\u00e7bir \u00f6nemi yoktur. Azure sadece bynary datay\u0131 bilir ve bloblara kaydeder.<\/p>\n<p>Azure Blob Storage; &#8216;Account&#8217;, &#8216;Container&#8217; ve &#8216;Blob&#8217; olmak \u00fczere \u00fc\u00e7 yap\u0131dan meydana gelir.<\/p>\n<p><span style=\"color: blue;\">&#8216;Account&#8217;<\/span>; Storage Account, datalar i\u00e7in Azure&#8217;da benzersiz bir isim alan\u0131 sa\u011flamaktad\u0131r. B\u00f6ylece depolanacak her nesnenin benzersiz hesap ad\u0131n\u0131 i\u00e7eren bir adresi olacakt\u0131r.<\/p>\n<p>\u00d6rnek bir account endpoint&#8217;i \u015f\u00f6yle olmaktad\u0131r.<br \/>\n<code style=\"color: red;\"><strong>https:\/\/&lt;account_name&gt;.blob.core.windows.net<\/strong><\/code><\/p>\n<p><span style=\"color: blue;\">&#8216;Container&#8217;<\/span>; Blob&#8217;lar\u0131 sarmalayacak klas\u00f6rlerdir. Blob kaydetmeden \u00f6nce container \u00fcretilmelidir. Bir account s\u0131n\u0131rs\u0131z say\u0131da container, bir container ise s\u0131n\u0131rs\u0131z say\u0131da blob bar\u0131nd\u0131rabilmektedir.<\/p>\n<p><span style=\"color: blue;\">&#8216;Blob&#8217;<\/span>; Datan\u0131n yerle\u015ftirildi\u011fi yerdir. Yap\u0131sal olarak &#8216;Block Blobs&#8217;, &#8216;Append Blobs&#8217; ve &#8216;Page Blobs&#8217; olmak \u00fczere \u00fc\u00e7e ayr\u0131l\u0131r.<\/p>\n<ul>\n<li><strong>Block Blobs<\/strong><br \/>\nKaydedilecek dosyan\u0131n bir b\u00fct\u00fcn olarak de\u011filde blok blok par\u00e7alanarak kaydedilmesidir. Okunmak istendi\u011fi zaman bu par\u00e7alar e\u015f zamanl\u0131 okunabilmekte ve b\u00f6ylece h\u0131z kazan\u0131lmaktad\u0131r.Her blok <u>100 MB<\/u>&#8216;a kadar data al\u0131r ve bir blob&#8217;da <u>50 bin<\/u> kadar blok olabilir. Bu da tek bir blob&#8217;da <u>5 Terabayt&#8217;l\u0131k<\/u> veriye kar\u015f\u0131l\u0131k gelmektedir.<\/p>\n<p>Eklenen dosya isimleri yahut i\u00e7erikleri de\u011fi\u015ftirilmek istendi\u011finde de\u011fi\u015fiklik yapmaz, ilgili dosyan\u0131n \u00fczerine tekrardan yazar. De\u011fi\u015fiklik yap\u0131labilir dosyalar\u0131 tutmak i\u00e7in &#8216;Append Blobs&#8217; tercih edilmelidir.<\/li>\n<li><strong>Append Blobs<\/strong><br \/>\n\u00dczerine ekleme yap\u0131labilir dosyalar tutulur. Misal, loglama raporlar\u0131n\u0131n kaydedildi\u011fi durumlara istinaden s\u00fcrekli i\u00e7eri\u011fi de\u011fi\u015fen .txt uzant\u0131l\u0131 dosyalar gibi&#8230;<\/li>\n<li><strong>Page Blobs<\/strong><br \/>\nDatalar pagelerde tutulmakta ve her bir page <u>512 byte<\/u>&#8216;tan meydana gelmektedir. Bu byte&#8217;lar da herhangi bir byte aral\u0131\u011f\u0131nda okuma ve yazma i\u015flemi ger\u00e7ekle\u015ftirilebilir. Normal senaryolara g\u00f6re pekte uygun bir storage de\u011fildir.<\/li>\n<\/ul>\n<h3 style=\"color: #e83e8c;\">Asp.NET Core \u0130le Azure Blob Storage Kullan\u0131m\u0131<\/h3>\n<p>Bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-storage-serisi-6-azure-table-storage-ve-net-core\/\" target=\"_blank\" rel=\"noopener noreferrer\">Azure Table Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda, Table Storage&#8217;\u0131 Asp.NET Core ile \u00f6rneklendirebilmek i\u00e7in bir class library olu\u015fturmu\u015ftuk. Benzer mant\u0131kla burada da ayn\u0131 \u015fekilde bir geli\u015ftirmede bulunaca\u011f\u0131z.<\/p>\n<ul>\n<li><strong>Ad\u0131m 1<\/strong><br \/>\nBir class library uygulamas\u0131 olu\u015fturunuz ve uygulamaya <a href=\"https:\/\/www.nuget.org\/packages\/Azure.Storage.Blobs\" target=\"_blank\" rel=\"noopener noreferrer\">Azure.Storage.Blobs<\/a> k\u00fct\u00fcphanesini y\u00fckleyiniz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-16930\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"267\" height=\"134\" \/><\/a><\/li>\n<li><strong>Ad\u0131m 2<\/strong><br \/>\n&#8216;IBlobStorage&#8217; isminde bir interface olu\u015fturunuz ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi tasarlay\u0131n\u0131z.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public interface IBlobStorage\r\n    {\r\n        Task UploadAsnyc(Stream fileStream, string name, string containerName);\r\n        Task&lt;Stream&gt; DownloadAsync(string fileName, string containerName);\r\n        Task DeleteAsync(string fileName, string containerName);\r\n        Task SetLogAsync(string text, string fileName);\r\n        Task&lt;List&lt;string&gt;&gt; GetLogAsync(string fileName);\r\n        List&lt;string&gt; GetNames(string containerNames);\r\n    }\r\n<\/pre>\n<\/li>\n<li><strong>Ad\u0131m 3<\/strong><br \/>\nArd\u0131ndan &#8216;IBlobStorage&#8217; interface&#8217;ini uygulayan &#8216;BlobStorage&#8217; isminde bir class olu\u015fturunuz ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi in\u015fa ediniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class BlobStorage : IBlobStorage\r\n    {\r\n        private readonly BlobServiceClient _blobServiceClient;\r\n        BlobContainerClient _blobContainerClient;\r\n        public BlobStorage()\r\n        {\r\n            _blobServiceClient = new BlobServiceClient(&quot;DefaultEndpointsProtocol=https;AccountName=gencayyildizstorage;AccountKey=9KxOlzewH\/S3zOCRTDGesGO9HR+86GZC2Zsyk7Rk54Bs1BxP4MT7tTeHbNe\/WljTCZQt7RfMr5UqVbKnuGTrtA==;EndpointSuffix=core.windows.net&quot;);\r\n        }\r\n        public async Task DeleteAsync(string fileName, string containerName)\r\n        {\r\n            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(containerName);\r\n            BlobClient blobClient = _blobContainerClient.GetBlobClient(fileName);\r\n            await blobClient.DeleteAsync();\r\n        }\r\n        public async Task&lt;Stream&gt; DownloadAsync(string fileName, string containerName)\r\n        {\r\n            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(containerName);\r\n            BlobClient blobClient = _blobContainerClient.GetBlobClient(fileName);\r\n            Response&lt;BlobDownloadInfo&gt; response = await blobClient.DownloadAsync();\r\n            \/\/response.Value -&gt; T\u00fcm bilgileri getirecektir.\r\n            return response.Value.Content;\r\n        }\r\n        public async Task&lt;List&lt;string&gt;&gt; GetLogAsync(string fileName)\r\n        {\r\n            List&lt;string&gt; logs = new List&lt;string&gt;();\r\n            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(&quot;logs&quot;);\/\/Log olaca\u011f\u0131 i\u00e7in ismi sabit.\r\n            AppendBlobClient appendBlobClient = _blobContainerClient.GetAppendBlobClient(fileName); \/\/\u00dczerine eklenebilir olaca\u011f\u0131ndan doay\u0131 AppendBlobClient se\u00e7ildi.\r\n            await appendBlobClient.CreateIfNotExistsAsync();\r\n            Response&lt;BlobDownloadInfo&gt; response = await appendBlobClient.DownloadAsync();\r\n            using StreamReader sr = new StreamReader(response.Value.Content);\r\n            string line = string.Empty;\r\n            while ((line = sr.ReadLine()) != null)\r\n                logs.Add(line);\r\n            return logs;\r\n        }\r\n        public List&lt;string&gt; GetNames(string containerNames)\r\n        {\r\n            List&lt;string&gt; blobNames = new List&lt;string&gt;();\r\n            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(containerNames);\r\n            return _blobContainerClient.GetBlobs().Select(b =&gt; b.Name).ToList();\r\n        }\r\n        public async Task SetLogAsync(string text, string fileName)\r\n        {\r\n            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(&quot;logs&quot;);\/\/Log olaca\u011f\u0131 i\u00e7in ismi sabit.\r\n            await _blobContainerClient.CreateIfNotExistsAsync();\r\n            AppendBlobClient appendBlobClient = _blobContainerClient.GetAppendBlobClient(fileName);\r\n            await appendBlobClient.CreateIfNotExistsAsync();\r\n            using MemoryStream ms = new MemoryStream();\r\n            using StreamWriter sw = new StreamWriter(ms);\r\n            await sw.WriteLineAsync($&quot;{DateTime.Now} | {text}&quot;);\r\n            await sw.FlushAsync();\r\n            ms.Position = 0; \/\/Stream 0. ak\u0131\u015ftan itibaren yazmaya ba\u015flayacak.\r\n            await appendBlobClient.AppendBlockAsync(ms);\r\n        }\r\n        public async Task UploadAsnyc(Stream fileStream, string name, string containerName)\r\n        {\r\n            _blobContainerClient = _blobServiceClient.GetBlobContainerClient(containerName);\r\n            \/\/Container yoksa olu\u015fturacak.\r\n            await _blobContainerClient.CreateIfNotExistsAsync();\r\n            \/\/Art\u0131k url \u00fczerinden eri\u015fime a\u00e7\u0131ld\u0131.\r\n            await _blobContainerClient.SetAccessPolicyAsync(PublicAccessType.BlobContainer);\r\n\r\n            BlobClient blobClient = _blobContainerClient.GetBlobClient(name);\r\n            await blobClient.UploadAsync(fileStream);\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funda bir izah yapmam\u0131z gerekecekse e\u011fer o da ilgili storage&#8217;\u0131n \u00e7al\u0131\u015fabilmesi i\u00e7in <strong><em>6.<\/em><\/strong> sat\u0131rda connection string girilmesi gereklili\u011fidir. Geri kalan t\u00fcm izahatler kodun i\u00e7erisinde a\u00e7\u0131klama sat\u0131r\u0131 olarak yap\u0131lm\u0131\u015ft\u0131r.\n<\/li>\n<li><strong>Ad\u0131m 4<\/strong><br \/>\nBir Asp.NET Core uygulamas\u0131 olu\u015fturunuz ve ilk olarak ilgili class library&#8217;i projeye referans olarak ekleyiniz ve ard\u0131ndan yukar\u0131da olu\u015fturulan yap\u0131lanmalar\u0131 uygulamaya servis olarak dahil ediniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Startup\r\n    {\r\n        .\r\n        .\r\n        .\r\n        public void ConfigureServices(IServiceCollection services)\r\n        {\r\n            .\r\n            .\r\n            .\r\n            services.AddSingleton&lt;IBlobStorage, BlobStorage&gt;();\r\n            .\r\n            .\r\n            .\r\n        }\r\n        .\r\n        .\r\n        .\r\n    }\r\n<\/pre>\n<\/li>\n<li><strong>Ad\u0131m 5<\/strong><br \/>\nArd\u0131ndan a\u015fa\u011f\u0131daki gibi bir controller s\u0131n\u0131f\u0131 olu\u015fturup, geli\u015ftiriniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Route(&quot;api\/&#x5B;controller]&quot;)]\r\n    &#x5B;ApiController]\r\n    public class FileController : ControllerBase\r\n    {\r\n        readonly IBlobStorage _blobStorage;\r\n        public FileController(IBlobStorage blobStorage)\r\n        {\r\n            _blobStorage = blobStorage;\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; UploadAsync(string fileName)\r\n        {\r\n            try\r\n            {\r\n                FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate);\r\n                await _blobStorage.UploadAsnyc(fileStream, Path.GetFileName(fileName), &quot;files&quot;);\r\n                return Ok(true);\r\n            }\r\n            catch\r\n            {\r\n                return Ok(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; DownloadAsync(string fileName, string containerName)\r\n        {\r\n            try\r\n            {\r\n                Stream stream = await _blobStorage.DownloadAsync(fileName, containerName);\r\n                \/\/return File(stream, &quot;application\/octet-stream&quot;, fileName);\r\n                return File(stream, &quot;application\/text&quot;, fileName);\r\n            }\r\n            catch\r\n            {\r\n                return Ok(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; DeleteAsync(string fileName, string containerName)\r\n        {\r\n            try\r\n            {\r\n                await _blobStorage.DeleteAsync(fileName, containerName);\r\n                return Ok(true);\r\n            }\r\n            catch\r\n            {\r\n                return Ok(false);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public IActionResult GetNames(string containerName)\r\n        {\r\n            return Ok(_blobStorage.GetNames(containerName));\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; GetLogAsync(string fileName)\r\n        {\r\n            return Ok(await _blobStorage.GetLogAsync(fileName));\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; SetLogAsync(string text, string fileName)\r\n        {\r\n            try\r\n            {\r\n                await _blobStorage.SetLogAsync(text, fileName);\r\n                return Ok(true);\r\n            }\r\n            catch(Exception ex)\r\n            {\r\n                \r\n                return Ok(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<\/li>\n<\/ul>\n<p>T\u00fcm bu i\u015flemlerden sonra art\u0131k ilgili uygulama derlenip \u00e7al\u0131\u015ft\u0131r\u0131lmal\u0131 ve istek g\u00f6nderilmelidir.<\/p>\n<p><strong>Test Edelim<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th width=\"50%;\">Upload<\/th>\n<th>Download<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"401\" height=\"266\" class=\"alignleft size-full wp-image-16946\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1.jpg 401w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1-300x199.jpg 300w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/a><\/td>\n<td><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"461\" height=\"213\" class=\"alignleft size-full wp-image-16947\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2.jpg 461w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2-300x139.jpg 300w\" sizes=\"auto, (max-width: 461px) 100vw, 461px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<thead>\n<tr>\n<th width=\"50%;\">Getnames<\/th>\n<th>Delete<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-3.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"363\" height=\"272\" class=\"alignleft size-full wp-image-16949\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-3.jpg 363w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-3-300x225.jpg 300w\" sizes=\"auto, (max-width: 363px) 100vw, 363px\" \/><\/a><\/td>\n<td><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-4.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"362\" height=\"200\" class=\"alignleft size-full wp-image-16950\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-4.jpg 362w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-4-300x166.jpg 300w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<thead>\n<tr>\n<th width=\"50%;\">Setlog<\/th>\n<th>Getlog<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-5.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"443\" height=\"197\" class=\"alignleft size-full wp-image-16951\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-5.jpg 443w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-5-300x133.jpg 300w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><\/a><\/td>\n<td><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-6.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"569\" height=\"274\" class=\"alignleft size-full wp-image-16952\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-6.jpg 569w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-6-300x144.jpg 300w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"color: #e83e8c;\">Blob URL \u00dczerinden Dosyalara Eri\u015fim Nas\u0131l Sa\u011flan\u0131r?<\/h3>\n<p>Azure Blob Storage&#8217;da depolanan dosyalara url \u00fczerinden eri\u015febilmek i\u00e7in account endpoint&#8217;ini a\u015fa\u011f\u0131daki gibi kullanabilirsiniz;<br \/>\n<code style=\"color: red;\"><strong>https:\/\/&lt;account_name&gt;.blob.core.windows.net\/<span style=\"color:blue;\">&lt;container_name&gt;<\/span>\/<span style=\"color:purple;\">&lt;file_name&gt;<\/span><\/strong><\/code><\/p>\n<p>Tabi burada container seviyesinde eri\u015fime izin verilmesi gerekmektedir. Bunun i\u00e7in &#8216;Containers&#8217; ekran\u0131na gelip ilgili container&#8217;\u0131 se\u00e7tikten sonra &#8216;Change access level&#8217; sekmesine t\u0131klay\u0131n\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-7.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-7.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"700\" height=\"221\" class=\"alignleft size-full wp-image-16955\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-7.jpg 700w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-7-300x95.jpg 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><br \/>\nArd\u0131ndan &#8216;Public access level&#8217; alan\u0131ndan &#8216;Container(anonymous read access for containers and blobs)&#8217; se\u00e7ene\u011fini i\u015faretleyerek &#8216;Ok&#8217; butonuna t\u0131klaman\u0131z yeterlidir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-8.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-8.jpg\" alt=\"Azure Storage Serisi #7 - Azure Blob Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"452\" height=\"282\" class=\"aligncenter size-full wp-image-16956\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-8.jpg 452w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-7-Azure-Blob-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-8-300x187.jpg 300w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/a><\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek projeyi indirebilmek i\u00e7in <a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/AzureTableStorageExample-1.zip\">buraya<\/a> t\u0131klay\u0131n\u0131z. <span style=\"font-size:10px;color:purple;\">(Bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-storage-serisi-6-azure-table-storage-ve-net-core\/\">Azure Table Storage<\/a> ba\u015fl\u0131kl\u0131 makalede irdeledi\u011fimiz \u00f6rnek proje \u00fczerinden geli\u015ftirme yap\u0131lm\u0131\u015ft\u0131r.)<\/span><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Azure Storage Yaz\u0131 Dizisinin bu yedinci makalesinde Azure Blob Storage&#8217;dan bahsedecek ve Asp.NET Core \u00fczerinde nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 inceleyece\u011fiz. Azure Blob Storage Nedir? Azure Blob Storage, Microsoft&#8217;un bulut i\u00e7in dosya depolama servisidir. PDF, Image,&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":16718,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3102,3121],"tags":[3654,2679,3651,3652,3604,3656,3653,3655],"class_list":["post-16906","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-azure","tag-append-blobs","tag-asp-net-core","tag-azure-blob-storage","tag-azure-blob-storage-asp-net-core","tag-azure-storage","tag-azure-storage-blobs","tag-block-blobs","tag-page-blobs"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=16906"}],"version-history":[{"count":44,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16906\/revisions"}],"predecessor-version":[{"id":16964,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16906\/revisions\/16964"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/16718"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=16906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=16906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=16906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}