التشغيل السريع: مكتبة عميل Azure Blob Storage لـ .NET
مقالة
ملاحظة
يرشدك الخيار Build from scratch خطوة بخطوة خلال عملية إنشاء مشروع جديد وتثبيت الحزم وكتابة التعليمات البرمجية وتشغيل تطبيق وحدة تحكم أساسي. يوصى بهذا الأسلوب إذا كنت تريد فهم جميع التفاصيل المتضمنة في إنشاء تطبيق يتصل ب Azure Blob Storage. إذا كنت تفضل أتمتة مهام النشر والبدء بمشروع مكتمل، فاختر بدء باستخدام قالب.
ملاحظة
يستخدم خيار البدء بقالب Azure Developer CLI لأتمتة مهام النشر ويبدأ بك بمشروع مكتمل. يوصى بهذا الأسلوب إذا كنت تريد استكشاف التعليمات البرمجية في أسرع وقت ممكن دون المرور عبر مهام الإعداد. إذا كنت تفضل إرشادات خطوة بخطوة لإنشاء التطبيق، فاختر إنشاء من البداية.
ابدأ مع مكتبة عميل Azure Blob Storage ل .NET. يعد Azure Blob Storage حل تخزين عناصر Microsoft للسحابة، وهو مُحسّن لتخزين كميات هائلة من البيانات غير المهيكلة.
في هذه المقالة، يمكنك اتباع الخطوات لتثبيت الحزمة وتجربة مثال التعليمات البرمجية للمهام الأساسية.
في هذه المقالة، يمكنك استخدام Azure Developer CLI لنشر موارد Azure وتشغيل تطبيق وحدة تحكم مكتملة مع بعض الأوامر فقط.
في الجزء العلوي من Visual Studio، انتقل إلى ملف>مشروع>جديد...
في نافذة مربع الحوار، أدخل تطبيق وحدة التحكم في مربع البحث في قالب المشروع وحدد النتيجة الأولى. اختر التالي في أسفل مربع الحوار.
بالنسبة إلى اسم المشروع، أدخل BlobQuickstart. اترك القيم الافتراضية لبقية الحقول وحدد التالي.
بالنسبة إلى Framework، تأكد من تحديد أحدث إصدار مثبت من .NET. ثم اختر إنشاء. يفتح المشروع الجديد داخل بيئة Visual Studio.
في نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، استخدم dotnet new الأمر لإنشاء تطبيق وحدة تحكم جديد باسم BlobQuickstart. هذا الأمر ينشئ مشروع "مرحباً بالعالم" بسيطاً بلغة #C باستخدام ملف مصدر واحد: Program.cs.
.NET CLI
dotnetnew console -n BlobQuickstart
قم بالتبديل إلى دليل BlobQuickstart الذي تم إنشاؤه حديثا.
Console
cd BlobQuickstart
افتح المشروع في محرر التعليمات البرمجية المطلوب. لفتح المشروع في:
Visual Studio، حدد موقع الملف BlobQuickStart.csproj وانقر نقرًا مزدوجًا فوقه.
في Visual Studio Code، قم بتشغيل الأمر التالي:
Bash
code .
تثبيت الحزمة
للتفاعل مع Azure Blob Storage، قم بتثبيت مكتبة عميل Azure Blob Storage لـ .NET.
الآن بعد تحديث مصدر الحزمة، قم بتشغيل الأمر لتثبيت الحزمة.
إعداد تعليمة برمجية للتطبيق
استبدل التعليمة البرمجية للبداية في ملف Program.cs بحيث تتطابق مع المثال التالي، والذي يتضمن العبارات الضرورية using لهذا التمرين.
C#
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System;
using System.IO;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
مع تثبيت Azure Developer CLI ، يمكنك إنشاء حساب تخزين وتشغيل نموذج التعليمات البرمجية مع بعض الأوامر فقط. يمكنك تشغيل المشروع في بيئة التطوير المحلية الخاصة بك، أو في DevContainer.
تهيئة قالب Azure Developer CLI ونشر الموارد
من دليل فارغ، اتبع هذه الخطوات لتهيئة القالب azd وتوفير موارد Azure والبدء في استخدام التعليمات البرمجية:
استنساخ أصول مستودع التشغيل السريع من GitHub وتهيئة القالب محليا:
اسم البيئة: يتم استخدام هذه القيمة كبادئة لكافة موارد Azure التي تم إنشاؤها بواسطة Azure Developer CLI. يجب أن يكون الاسم فريدا عبر جميع اشتراكات Azure ويجب أن يتراوح طوله بين 3 و24 حرفا. يمكن أن يحتوي الاسم على أرقام وأحرف صغيرة فقط.
تسجيل الدخول إلى Azure:
Console
azd auth login
توفير الموارد ونشرها في Azure:
Console
azd up
ستتم مطالبتك بالمعلومات التالية:
الاشتراك: اشتراك Azure الذي يتم نشر مواردك إليه.
الموقع: منطقة Azure حيث يتم نشر مواردك.
قد يستغرق انتهاء النشر بضع دقائق. يتضمن الإخراج من azd up الأمر اسم حساب التخزين الذي تم إنشاؤه حديثا، والذي ستحتاج إليه لاحقا لتشغيل التعليمات البرمجية.
شغل التعليمات البرمجية النموذجية
عند هذه النقطة، يتم نشر الموارد إلى Azure ويكون المشروع جاهزا للتشغيل. اتبع هذه الخطوات لتحديث اسم حساب التخزين في التعليمات البرمجية وتشغيل نموذج تطبيق وحدة التحكم:
تحديث اسم حساب التخزين: انتقل إلى src الدليل وقم بتحرير Program.cs. ابحث عن <storage-account-name> العنصر النائب واستبدله بالاسم الفعلي لحساب التخزين الذي أنشأه azd up الأمر . احفظ التغييرات.
تشغيل المشروع: إذا كنت تستخدم Visual Studio، فاضغط على F5 لإنشاء التعليمات البرمجية وتشغيلها والتفاعل مع تطبيق وحدة التحكم. إذا كنت تستخدم .NET CLI، فانتقل إلى دليل التطبيق الخاص بك، وأنشئ المشروع باستخدام dotnet build، وقم بتشغيل التطبيق باستخدام dotnet run.
مراقبة الإخراج: ينشئ هذا التطبيق ملف اختبار في مجلد البيانات المحلي الخاص بك ويحمله إلى حاوية في حساب التخزين. ثم يسرد المثال النقط في الحاوية ثم يقوم بتحميل الملف باسم جديد بحيث يمكنك مقارنة الملفات القديمة والجديدة.
عند الانتهاء من اختبار التعليمات البرمجية، راجع قسم تنظيف الموارد لحذف الموارد التي أنشأها azd up الأمر.
نموذج الكائن
يتم تحسين Azure Blob Storage لتخزين كميات هائلة من البيانات غير المهيكلة. لا تلتزم البيانات غير المنظمة بنموذج بيانات أو تعريف معين، مثل النص أو البيانات الثنائية. يوفر موقع تخزين Blob ثلاثة أنواع من الموارد:
حساب التخزين
حاوية في حساب التخزين
كائن تخزين بيانات ثنائية كبيرة في الحاوية
يعرض الرسم التخطيطي التالي العلاقة بين هذه الموارد.
سوف تستخدم فئات .NET التالية للتفاعل مع هذه الموارد:
BlobServiceClient: BlobServiceClient تسمح لك الفئة بمعالجة موارد Azure Storage وحاويات كائن تخزين البيانات الثنائية الكبيرة.
ContainerClient: تسمح لك الفئة BlobContainerClient بمعالجة حاويات Azure Storage والنقط الخاصة بهم.
BlobClient: BlobClient تسمح الفئة لك بمعالجة نقط تخزين Azure.
أمثلة على التعليمات البرمجية
توضح نماذج أجزاء التعليمات البرمجية في الأقسام التالية كيفية تنفيذ المهام التالية باستخدام مكتبة عميل Azure Blob Storage ل .NET:
تأكد من تثبيت حزم NuGet الصحيحة وإضافة عبارات الاستخدام الضرورية لكي تعمل نماذج التعليمات البرمجية، كما هو موضح في قسم الإعداد .
ملاحظة
يتضمن قالب Azure Developer CLI مشروعا مع نموذج التعليمات البرمجية في مكانه بالفعل. توفر الأمثلة التالية تفاصيل لكل جزء من نموذج التعليمات البرمجية. ينفذ القالب أسلوب المصادقة بدون كلمة مرور الموصى بها، كما هو موضح في قسم Authenticate to Azure . يتم عرض أسلوب سلسلة الاتصال كبديل، ولكن لا يتم استخدامه في القالب ولا يوصى به للتعليمات البرمجية للإنتاج.
المصادقة على Azure وتخويل الوصول إلى بيانات الكائن الثنائي كبير الحجم
يجب تخويل طلبات التطبيق إلى Azure Blob Storage. DefaultAzureCredential استخدام الفئة التي توفرها مكتبة عميل Azure Identity هو الأسلوب الموصى به لتنفيذ اتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك، بما في ذلك Blob Storage.
يمكنك أيضًا تخويل الطلبات إلى Azure Blob Storage باستخدام مفتاح الوصول إلى الحساب. ومع ذلك، ينبغي استخدام هذا النهج بحذر. يجب أن يكون المطورون مجتهدين لعدم عرض مفتاح الوصول في موقع غير آمن. يمكن لأي شخص لديه مفتاح الوصول تخويل الطلبات مقابل حساب التخزين، ولديه حق الوصول إلى جميع البيانات بشكل فعال. DefaultAzureCredential يوفر مزايا إدارة وأمان محسنة عبر مفتاح الحساب للسماح بالمصادقة التي لا تتطلب كلمة مرور. يتم عرض كلا الخيارين في المثال التالي.
DefaultAzureCredential هي فئة توفرها مكتبة عميل هوية Azure لـ .NET، والتي يمكنك معرفة المزيد عنها في نظرة عامة على DefaultAzureCredential. DefaultAzureCredential يدعم أساليب مصادقة متعددة ويحدد الأسلوب الذي يجب استخدامه في وقت التشغيل. يمكن هذا النهج تطبيقك من استخدام أساليب مصادقة مختلفة في بيئات مختلفة (البيئة المحلية مقابل بيئة التشغيل) دون تنفيذ التعليمات البرمجية الخاصة بالبيئة.
يمكن العثور على الترتيب والمواقع التي تبحث فيها DefaultAzureCredential عن بيانات الاعتماد في نظرة عامة على مكتبة هوية Azure.
على سبيل المثال، يمكن للتطبيق الخاص بك المصادقة باستخدام بيانات اعتماد تسجيل الدخول إلى Visual Studio عند التطوير محليًا. يمكن لتطبيقك بعد ذلك استخدام هوية مدارة بمجرد توزيعها في Azure. لا توجد تغييرات في التعليمات البرمجية مطلوبة لهذه المرحلة الانتقالية.
تعيين أدوار لحساب مستخدم Microsoft Entra
عند التطوير محليًا، تأكد من أن حساب المستخدم الذي يصل إلى بيانات الكائن الثنائي كبير الحجم لديه الأذونات الصحيحة. ستحتاج إلى Storage Blob Data Contributor لقراءة بيانات الكائن الثنائي كبير الحجم وكتابتها. لتعيين هذا الدور لنفسك، ستحتاج إلى تعيين دور مسؤول وصول المستخدم، أو دور آخر يتضمن إجراء Microsoft.Authorization/roleAssignments/write . يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. يمكنك معرفة المزيد حول النطاقات المتوفرة لتعيينات الأدوار في صفحة نظرة عامة على النطاق.
في هذا السيناريو، ستقوم بتعيين أذونات لحساب المستخدم الخاص بك، محددة النطاق إلى حساب التخزين، لاتباع مبدأ أقل الامتيازات. تمنح هذه الممارسة المستخدمين الحد الأدنى من الأذونات المطلوبة فقط وتنشئ بيئات تشغيل أكثر أمانًا.
سيقوم المثال التالي بتعيين دور Storage Blob Data Contributor إلى حساب المستخدم الخاص بك، والذي يوفر حق الوصول للقراءة والكتابة إلى بيانات blob في حساب التخزين الخاص بك.
هام
في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين، ولكن في حالات نادرة قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
في مدخل Microsoft Azure، حدد موقع حساب التخزين الخاص بك باستخدام شريط البحث الرئيسي أو شريط التنقل الأيسر.
في صفحة نظرة عامة على حساب التخزين، حدد التحكم بالوصول (IAM) من القائمة اليسرى.
حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.
حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.
استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث عن مساهم بيانات Storage Blob وحدد النتيجة المطابقة ثم اختر التالي.
ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.
في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.
حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.
لتعيين دور على مستوى المورد باستخدام Azure CLI، يجب أولاً استرداد معرف المورد باستخدام الأمر az storage account show. يمكنك تصفية خصائص الإخراج باستخدام المعلمة --query.
Azure CLI
az storage account show --resource-group'<your-resource-group-name>'--name'<your-storage-account-name>'--query id
انسخ الإخراج Id من الأمر السابق. يمكنك بعد ذلك تعيين الأدوار باستخدام أمر az role لـ Azure CLI.
Azure CLI
az role assignment create --assignee"<user@domain>" \
--role"Storage Blob Data Contributor" \
--scope"<your-resource-id>"
لتعيين دور على مستوى المورد باستخدام Azure PowerShell، يجب أولا استرداد معرف المورد باستخدام Get-AzResource الأمر .
تسجيل الدخول وتوصيل التعليمات البرمجية للتطبيق الخاص بك ب Azure باستخدام DefaultAzureCredential
يمكنك تخويل الوصول إلى البيانات في حساب التخزين الخاص بك باستخدام الخطوات التالية:
للتطوير المحلي، تأكد من مصادقتك باستخدام حساب Microsoft Entra نفسه الذي قمت بتعيين الدور إليه. يمكنك المصادقة عبر أدوات التطوير الشائعة، مثل Azure CLI أو Azure PowerShell. تختلف أدوات التطوير التي يمكنك المصادقة بها عبر اللغات.
في مستكشف الحلول، انقر بزر الماوس الأيمن فوق عقدة التبعيات لمشروعك. حدد Manage NuGet Packages.
في النافذة الناتجة، ابحث عن Azure.Identity. حدد النتيجة المناسبة، وحدد تثبيت.
.NET CLI
dotnetadd package Azure.Identity
حدث التعليمات البرمجية Program.cs الخاصة بك لمطابقة المثال التالي. عند تشغيل التعليمات البرمجية على محطة العمل المحلية أثناء التطوير، ستستخدم بيانات اعتماد المطور للأداة ذات الأولوية التي سجلت الدخول إليها للمصادقة على Azure، مثل Azure CLI أو Visual Studio.
C#
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System;
using System.IO;
using Azure.Identity;
// TODO: Replace <storage-account-name> with your actual storage account namevar blobServiceClient = new BlobServiceClient(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new DefaultAzureCredential());
تأكد من تحديث اسم حساب التخزين في URI BlobServiceClient الخاص بك. يمكن العثور على اسم حساب التخزين في صفحة النظرة العامة لمدخل Microsoft Azure.
ملاحظة
عند التوزيع إلى Azure، يمكن استخدام نفس التعليمات البرمجية لتخويل الطلبات إلى Azure Storage من تطبيق يعمل في Azure. ومع ذلك، ستحتاج إلى تمكين الهوية المدارة على تطبيقك في Azure. ثم قم بتكوين حساب التخزين الخاص بك للسماح لتلك الهوية المدارة بالاتصال. للحصول على إرشادات مفصلة حول تكوين هذا الاتصال بين خدمات Azure، راجع البرنامج التعليمي مصادقة من التطبيقات المستضافة على Azure.
تتضمن سلسلة الاتصال مفتاح الوصول إلى حساب التخزين وتستخدمه لتخويل الطلبات. كن حذرًا دائمًا من عدم كشف المفاتيح في موقع غير آمن.
ملاحظة
لتخويل الوصول إلى البيانات باستخدام مفتاح الوصول إلى حساب التخزين، ستحتاج إلى أذونات لإجراء Azure RBAC التالي: Microsoft.Storage/storageAccounts/listkeys/action. الدور المضمن الأقل امتيازا مع أذونات لهذا الإجراء هو القارئ والوصول إلى البيانات، ولكن أي دور يتضمن هذا الإجراء سيعمل.
بعد نسخ سلسلة الاتصال، سجله في متغير البيئة الجديد على الجهاز المحلي الذي يقوم بتشغيل التطبيق. لتعيين متغير البيئة، يجب فتح إطار وحدة التحكم واتباع الإرشادات الخاصة بنظام التشغيل. استبدل <yourconnectionstring> بسلسلة الاتصال الفعلية الخاصة بك.
بعد إضافة متغير البيئة في Windows، يجب بدء تشغيل مثيل جديد من نافذة الأمر. إذا كنت تستخدم Visual Studio على Windows، فقد تحتاج إلى إعادة تشغيل Visual Studio بعد إنشاء متغير البيئة للكشف عن التغيير.
تسترد التعليمات البرمجية أدناه سلسلة الاتصال لحساب التخزين من متغير البيئة الذي تم إنشاؤه مسبقا، وتستخدم سلسلة الاتصال لإنشاء كائن عميل خدمة.
أضف التعليمة البرمجية التالية إلى نهاية الملف Program.cs:
C#
// Retrieve the connection string for use with the application. string connectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");
// Create a BlobServiceClient object var blobServiceClient = new BlobServiceClient(connectionString);
هام
يجب استخدام مفتاح الوصول إلى الحساب بحذر. إذا فقدت مفتاح الوصول إلى حسابك أو تم وضعه عن طريق الخطأ في موقع غير آمن، فقد تصبح خدمتك عرضة للخطر. يمكن لأي شخص لديه مفتاح الوصول تخويل الطلبات مقابل حساب التخزين، ولديه حق الوصول إلى جميع البيانات بشكل فعال. DefaultAzureCredential يوفر ميزات وفوائد أمان محسنة وهو النهج الموصى به لإدارة التخويل لخدمات Azure.
إنشاء حاوية
إنشاء حاوية جديدة في حساب التخزين الخاص بك عن طريق استدعاء الأسلوب CreateBlobContainerAsync على blobServiceClient الكائن. في هذا المثال، تقوم التعليمات البرمجية بإلحاق قيمة GUID باسم الحاوية للتأكد من أنها فريدة.
أضف التعليمات البرمجية التالية إلى نهاية Program.cs الملف:
C#
// TODO: Replace <storage-account-name> with your actual storage account namevar blobServiceClient = new BlobServiceClient(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new DefaultAzureCredential());
//Create a unique name for the containerstring containerName = "quickstartblobs" + Guid.NewGuid().ToString();
// Create the container and return a container client object
BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);
تحميل كائن ثنائي كبير الحجم إلى حاوية باستخدام UploadAsync. ينشئ مثال التعليمات البرمجية ملفا نصيا في دليل البيانات المحلي لتحميله إلى الحاوية.
أضف التعليمات البرمجية التالية إلى نهاية Program.cs الملف:
C#
// Create a local file in the ./data/ directory for uploading and downloadingstring localPath = "data";
Directory.CreateDirectory(localPath);
string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
string localFilePath = Path.Combine(localPath, fileName);
// Write text to the fileawait File.WriteAllTextAsync(localFilePath, "Hello, World!");
// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient(fileName);
Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);
// Upload data from the local file, overwrite the blob if it already existsawait blobClient.UploadAsync(localFilePath, true);
اسرد كائنات تخزين البيانات الثنائية الكبيرة في الحاوية من خلال استدعاء الأسلوب GetBlobsAsync.
أضف التعليمات البرمجية التالية إلى نهاية Program.cs الملف:
C#
Console.WriteLine("Listing blobs...");
// List all blobs in the containerawaitforeach (BlobItem blobItem in containerClient.GetBlobsAsync())
{
Console.WriteLine("\t" + blobItem.Name);
}
قم بتنزيل الكائن الثنائي كبير الحجم الذي أنشأناه سابقا عن طريق استدعاء أسلوب DownloadToAsync . يقوم مثال التعليمات البرمجية بإلحاق السلسلة "DOWNLOADED" باسم الملف بحيث يمكنك رؤية كلا الملفين في نظام الملفات المحلي.
أضف التعليمات البرمجية التالية إلى نهاية Program.cs الملف:
C#
// Download the blob to a local file// Append the string "DOWNLOADED" before the .txt extension // so you can compare the files in the data directorystring downloadFilePath = localFilePath.Replace(".txt", "DOWNLOADED.txt");
Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);
// Download the blob's contents and save it to a fileawait blobClient.DownloadToAsync(downloadFilePath);
تنظف التعليمات البرمجية التالية الموارد التي أنشأها التطبيق عن طريق حذف الحاوية باستخدام DeleteAsync. يحذف مثال التعليمات البرمجية أيضا الملفات المحلية التي أنشأها التطبيق.
يتوقف التطبيق مؤقتا المستخدم عن طريق الاتصال Console.ReadLine قبل أن يحذف النقطة والحاوية والملفات المحلية. هذه فرصة جيدة للتحقق من إنشاء الموارد بشكل صحيح، قبل حذفها.
أضف التعليمات البرمجية التالية إلى نهاية Program.cs الملف:
C#
// Clean up
Console.Write("Press any key to begin clean up");
Console.ReadLine();
Console.WriteLine("Deleting blob container...");
await containerClient.DeleteAsync();
Console.WriteLine("Deleting the local source and downloaded files...");
File.Delete(localFilePath);
File.Delete(downloadFilePath);
Console.WriteLine("Done");
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Identity;
// TODO: Replace <storage-account-name> with your actual storage account namevar blobServiceClient = new BlobServiceClient(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new DefaultAzureCredential());
//Create a unique name for the containerstring containerName = "quickstartblobs" + Guid.NewGuid().ToString();
// Create the container and return a container client object
BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);
// Create a local file in the ./data/ directory for uploading and downloadingstring localPath = "data";
Directory.CreateDirectory(localPath);
string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
string localFilePath = Path.Combine(localPath, fileName);
// Write text to the fileawait File.WriteAllTextAsync(localFilePath, "Hello, World!");
// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient(fileName);
Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);
// Upload data from the local fileawait blobClient.UploadAsync(localFilePath, true);
Console.WriteLine("Listing blobs...");
// List all blobs in the containerawaitforeach (BlobItem blobItem in containerClient.GetBlobsAsync())
{
Console.WriteLine("\t" + blobItem.Name);
}
// Download the blob to a local file// Append the string "DOWNLOADED" before the .txt extension // so you can compare the files in the data directorystring downloadFilePath = localFilePath.Replace(".txt", "DOWNLOADED.txt");
Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);
// Download the blob's contents and save it to a fileawait blobClient.DownloadToAsync(downloadFilePath);
// Clean up
Console.Write("Press any key to begin clean up");
Console.ReadLine();
Console.WriteLine("Deleting blob container...");
await containerClient.DeleteAsync();
Console.WriteLine("Deleting the local source and downloaded files...");
File.Delete(localFilePath);
File.Delete(downloadFilePath);
Console.WriteLine("Done");
C#
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
// TODO: Replace <storage-account-name> with your actual storage account namevar blobServiceClient = new BlobServiceClient("<storage-account-connection-string>");
//Create a unique name for the containerstring containerName = "quickstartblobs" + Guid.NewGuid().ToString();
// Create the container and return a container client object
BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);
// Create a local file in the ./data/ directory for uploading and downloadingstring localPath = "data";
Directory.CreateDirectory(localPath);
string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
string localFilePath = Path.Combine(localPath, fileName);
// Write text to the fileawait File.WriteAllTextAsync(localFilePath, "Hello, World!");
// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient(fileName);
Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);
// Upload data from the local fileawait blobClient.UploadAsync(localFilePath, true);
Console.WriteLine("Listing blobs...");
// List all blobs in the containerawaitforeach (BlobItem blobItem in containerClient.GetBlobsAsync())
{
Console.WriteLine("\t" + blobItem.Name);
}
// Download the blob to a local file// Append the string "DOWNLOADED" before the .txt extension // so you can compare the files in the data directorystring downloadFilePath = localFilePath.Replace(".txt", "DOWNLOADED.txt");
Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);
// Download the blob's contents and save it to a fileawait blobClient.DownloadToAsync(downloadFilePath);
// Clean up
Console.Write("Press any key to begin clean up");
Console.ReadLine();
Console.WriteLine("Deleting blob container...");
await containerClient.DeleteAsync();
Console.WriteLine("Deleting the local source and downloaded files...");
File.Delete(localFilePath);
File.Delete(downloadFilePath);
Console.WriteLine("Done");
تشغيل التعليمات البرمجية
يقوم هذا التطبيق بإنشاء ملف اختبار في المجلد البيانات المحلية الخاصة بك وتحميله إلى Blob storage. ثم يسرد المثال النقط في الحاوية ثم يقوم بتحميل الملف باسم جديد بحيث يمكنك مقارنة الملفات القديمة والجديدة.
إذا كنت تستخدم Visual Studio، فاضغط على F5 لإنشاء التعليمات البرمجية وتشغيلها والتفاعل مع تطبيق وحدة التحكم. إذا كنت تستخدم .NET CLI، فانتقل إلى دليل التطبيق الخاص بك، ثم قم ببناء التطبيق وتشغيله.
Console
dotnet build
Console
dotnet run
يشبه إخراج التطبيق المثال التالي (تم حذف قيم GUID لسهولة القراءة):
Output
Azure Blob Storage - .NET quickstart sample
Uploading to Blob storage as blob:
https://mystorageacct.blob.core.windows.net/quickstartblobsGUID/quickstartGUID.txt
Listing blobs...
quickstartGUID.txt
Downloading blob to
./data/quickstartGUIDDOWNLOADED.txt
Press any key to begin clean up
Deleting blob container...
Deleting the local source and downloaded files...
Done
قبل بدء عملية التنظيف، تحقق من مجلد البيانات الخاص بك بحثا عن الملفين. ويمكنك فتحهما ورؤية أنهما متطابقان.
تنظيف الموارد
بعد التحقق من الملفات وإنهاء الاختبار، اضغط على المفتاح Enter لحذف ملفات الاختبار مع الحاوية التي أنشأتها في حساب التخزين. يمكنك أيضا استخدام Azure CLI لحذف الموارد.
عند الانتهاء من التشغيل السريع، يمكنك تنظيف الموارد التي قمت بإنشائها عن طريق تشغيل الأمر التالي:
عرض إرشادات المطور ونموذج التعليمات البرمجية ل Azure Storage. اكتشف بدء تشغيل العينات للكائنات الثنائية كبيرة الحجم وقوائم الانتظار والجداول والملفات باستخدام مكتبات عميل التخزين .NET.