سؤال

كيفية إنشاء دليل فرعي في حاوية النقطة

علي سبيل المثال،

في حاوية النقطة الخاصة بي http://veda.blob.core.windows.net/document/

إذا قمت بتخزين بعض الملفات فستكون كذلك

http://veda.blob.core.windows.net/document/1.txt

http://veda.blob.core.windows.net/document/2.txt

الآن ، كيفية إنشاء دليل فرعي

http://veda.blob.core.windows.net/document/folder/

حتى أتمكن من تخزين الملفات

http://veda.blob.core.windows.net/document/folder/1.txt

هل كانت مفيدة؟

المحلول

للإضافة إلى ما قاله Egon ، قم ببساطة بإنشاء Blob الذي يسمى "Folder/1.txt" ، وسوف يعمل. لا حاجة لإنشاء دليل.

نصائح أخرى

يوجد في الواقع طبقة واحدة فقط من الحاويات. يمكنك فعليًا إنشاء "نظام ملفات" مثل التخزين الطبقات ، ولكن في الواقع سيكون كل شيء في طبقة واحدة ، الحاوية الموجودة فيها.

لإنشاء "نظام ملفات" افتراضي مثل التخزين ، يمكنك الحصول على أسماء blob التي تحتوي على '/' حتى تتمكن من القيام بكل ما تريد بالطريقة التي تخزنها. أيضا ، الشيء العظيم هو أنه يمكنك البحث عن نقطة على مستوى افتراضي ، من خلال إعطاء سلسلة جزئية ، حتى "/".

هذين الأمرين ، إضافة "/" إلى مسار وسلسلة جزئية للبحث ، قم معًا بإنشاء تخزين افتراضي "نظام ملف".

هناك تعليق من قبل @AFR0 يسأل عن كيفية التصفية على المجلدات ..

هناك طريقتان باستخدام GetDirectoryReference أو حلقة من خلال النقط الحاويات والتحقق من النوع. الرمز أدناه في C#

CloudBlobContainer container = blobClient.GetContainerReference("photos");

//Method 1. grab a folder reference directly from the container
CloudBlobDirectory folder = container.GetDirectoryReference("directoryName");

//Method 2. Loop over container and grab folders.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
    if (item.GetType() == typeof(CloudBlobDirectory))
    {
        // we know this is a sub directory now
        CloudBlobDirectory subFolder = (CloudBlobDirectory)item;

        Console.WriteLine("Directory: {0}", subFolder.Uri);
    }
}

اقرأ هذا لمزيد من التغطية المتعمقة: http://www.codeproject.com/articles/297052/azure-storage-blobs-service-working-with-directori

في Portal Azure ، لدينا خيار أدناه أثناء تحميل الملف:

enter image description here

إذا كنت تستخدم مستكشف تخزين Microsoft Azure, ، يوجد زر "مجلد جديد" يتيح لك إنشاء مجلد في حاوية. هذا في الواقع مجلد افتراضي:

enter image description here

كما ذكرت @igon أعلاه ، لا توجد إدارة حقيقية في تخزين blob.

يمكنك تحقيق بعض ميزات نظام الملفات باستخدام "/" في اسم الملف ، ولكن هذا له العديد من القيود (على سبيل المثال ، ما الذي يحدث إذا كنت بحاجة إلى إعادة تسمية "مجلد"؟).

كقاعدة عامة ، أود الاحتفاظ بملفاتي مسطح قدر الإمكان في حاوية ، وجعل تطبيقي يدير أي بنية أريد أن أعرضها للمستخدمين النهائيين (على سبيل المثال إدارة بنية مجلد متداخلة في قاعدة البيانات الخاصة بي, ، احصل على سجل لكل ملف ، مع الرجوع إلى Blob باستخدام اسم الحاوية واسم الملف).

لا تحتاج إلى إنشاء دليل فرعي. فقط قم بإنشاء حاوية blob واستخدم اسم الملف مثل المتغير اسم الملف على النحو الوارد أدناه:

string filename = "document/tech/user-guide.pdf";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);
blob.StreamWriteSizeInBytes = 20 * 1024;
blob.UploadFromStream(fileStream); // fileStream is System.IO.Stream

إليكم كيف أفعل ذلك في Coffescript على Node.js:

blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
    if err
        console.log 'failed to create path', err
    else
        console.log 'created path', path, result

حصلت على مشكلة مماثلة أثناء تجربة عينة Azure أول خاضع للخدمة.
فيما يلي معلومات عن كيفية حل عن طريق إزالة في مقدمة $ Web.

ملاحظة: تم إنشاء حاوية الويب $ تلقائيًا أثناء تمكين موقع الويب الثابت. لم أر حاوية الجذر $ في أي مكان.

//getting Invalid URI error while following tutorial as-is
az storage blob upload-batch -s . -d \$web --account-name firststgaccount01

//Remove "\" @destination param
az storage blob upload-batch -s . -d $web --account-name firststgaccount01
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top