Microsoft Azure: एक बूँद कंटेनर में उप निर्देशिका कैसे बनाएँ


97

कैसे एक बूँद कंटेनर में एक उप निर्देशिका बनाने के लिए

उदाहरण के लिए,

मेरे बूँद कंटेनर में 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

जवाबों:


137

ईगन ने जो कहा, उस पर जोड़ने के लिए, बस अपने फोल्डर को "फोल्डर / 1.txt" कहा जाता है, और यह काम करेगा। कोई निर्देशिका बनाने की आवश्यकता नहीं है।


3
आप "फ़ोल्डर" से इन सभी फ़ाइलों को कैसे फ़िल्टर या प्राप्त करेंगे?
afr0

2
यह मेरे लिए काम नहीं करता है, कहते हैं कि कंटेनर कुछ भी उपयोग नहीं कर सकते हैं लेकिन लोअरकेस, हाइफ़न, संख्या। फाइलनाम के लिए समान
ग्रीन_क्यू

@Green_qaue आपको अपने कंटेनर / निर्देशिका के नामकरण के लिए केवल लोअरकेस अक्षरों और संख्याओं का उपयोग करना होगा और इसीलिए आपको त्रुटियां मिलीं।
सपन गफुरी

1
यह एक ही फ़ोल्डर के साथ कई निर्देशिकाएं बनाता है, मेरा मतलब है कि हर बार जब मैं फ़ाइल अपलोड करता हूं, तो यह फिर से "फ़ोल्डर" नामक निर्देशिका बनाता है, क्या यह जांचने की कोई विधि है कि क्या फ़ोल्डर मौजूद है इसलिए इसे नहीं बनाना चाहिए?
अमल ५०

@SapanGhafuri यह सच नहीं है, आप ऊपरी मामलों के पात्रों वाली निर्देशिका बना सकते हैं
कोडह जूल

36

वास्तव में कंटेनरों की एक ही परत है। आप वस्तुतः स्तरित भंडारण की तरह "फाइल-सिस्टम" बना सकते हैं, लेकिन वास्तव में सब कुछ 1 परत में होगा, जिस कंटेनर में यह है।

स्टोरेज की तरह एक वर्चुअल "फाइल-सिस्टम" बनाने के लिए, आपके पास ऐसे ब्लॉब नाम हो सकते हैं, जिनमें '/' लिखा होता है, ताकि आप अपनी पसंद के हिसाब से जो चाहें स्टोर कर सकें। इसके अलावा, महान बात यह है कि आप एक आभासी स्तर पर एक बूँद के लिए खोज कर सकते हैं, एक आंशिक स्ट्रिंग देकर, '/' तक।

खोज के लिए पथ और आंशिक स्ट्रिंग में '2' जोड़ते हुए ये 2 चीजें, एक साथ एक वर्चुअल "फाइल-सिस्टम" स्टोरेज बनाती हैं।


क्या आप C # नमूना साझा कर सकते हैं? blob। नाम केवल प्रॉपर्टी में पढ़ा जाता है इसलिए हम एक ब्लॉब नहीं बना पा रहे हैं। "/" के साथ नाम
ABB

34

@ 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


1
आज की तारीख में इसका उत्तर होना चाहिए। +1
मिकीडी

2
यह अच्छी जानकारी है, लेकिन क्या यह जवाब देता है 'एक बूँद कंटेनर में उप निर्देशिका कैसे बनाएं'?
कोडा

20

फ़ाइल अपलोड करते समय Azure पोर्टल में हमारे पास नीचे विकल्प है:

यहाँ छवि विवरण दर्ज करें


5

यदि आप Microsoft Azure Storage Explorer का उपयोग करते हैं , तो एक "नया फ़ोल्डर" बटन है जो आपको एक कंटेनर में एक फ़ोल्डर बनाने की अनुमति देता है। यह वास्तव में एक आभासी फ़ोल्डर है:

यहाँ छवि विवरण दर्ज करें


4

आपको उप निर्देशिका बनाने की आवश्यकता नहीं है। बस ब्लॉब कंटेनर बनाएं और नीचे दिए गए कोड के रूप में चर फ़ाइलनाम की तरह फ़ाइल नाम का उपयोग करें :

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

2

जैसा कि @Egon ऊपर उल्लेख किया गया है, BLOB भंडारण में कोई वास्तविक फ़ोल्डर प्रबंधन नहीं है।

आप फ़ाइल नाम में '/' का उपयोग करके फ़ाइल सिस्टम की कुछ विशेषताएं प्राप्त कर सकते हैं, लेकिन इसकी कई सीमाएँ हैं (उदाहरण के लिए, यदि आपको "फ़ोल्डर" नाम बदलने की आवश्यकता है तो क्या होगा?)।

एक सामान्य नियम के रूप में, मैं अपनी फ़ाइलों को यथासंभव कंटेनर में समतल रखूंगा , और मेरे एप्लिकेशन को जो भी संरचना मैं अंत उपयोगकर्ताओं को उजागर करना चाहता हूं, प्रबंधित करें (उदाहरण के लिए मेरे डेटाबेस में नेस्टेड फ़ोल्डर संरचना का प्रबंधन करें , प्रत्येक के लिए एक रिकॉर्ड है फ़ाइल, कंटेनर-नाम और फ़ाइल-नाम का उपयोग करके बीओएलबी को संदर्भित करता है)।


1

Azure नमूना प्रथम-सर्वर-रहित अनुप्रयोग का प्रयास करते समय समान समस्या मिली ।
यहाँ जानकारी है कि कैसे मैंने $ वेब के सामने से हटाकर हल किया।

नोट: $ वेब कंटेनर स्वचालित रूप से बनाया गया था जबकि स्थैतिक वेबसाइट को सक्षम किया गया था। कहीं भी $ रूट कंटेनर नहीं देखा।

//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

-2

यहाँ मैं इसे Node.JS पर CoffeeScript में कैसे करूँ:

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

4
प्रश्न को टैग किया गया हैC#
राफेल हर्स्कोविसी

@Dementic इसलिए मेरा कॉफ़ीस्क्रिप्ट का उल्लेख है, जो कि cruft के बिना जावास्क्रिप्ट है। सी # को पोर्ट करने के लिए बहुत कठिन नहीं होना चाहिए, विशेष रूप से स्वीकार किए गए उत्तर की तुलना में जो प्रोग्रामिंग भाषा में भी नहीं है।
सेस टिम्मरमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.