मेरे पास एक नोड.जेएस सेवा है जो एज़ूर से फ़ाइल को डोनलोड करना चाहिए, इसे संसाधित करना चाहिए और जब यह हो जाए- इसे उसी कंटेनर के भीतर "पूर्ण" सबफ़ोल्डर में ले जाएं।
मैं एक घंटे से अधिक के लिए प्रलेखन में खुदाई कर रहा हूं और ब्लॉब की प्रतिलिपि बनाने या उसका नाम बदलने के लिए कोई विधि नहीं ढूंढ सका, क्योंकि अगर मैं इसे शुरुआत से किया/ब्लॉब-नाम के रूप में बनाता हूं तो यह इसे सबफ़ोल्डर के अंदर दिखाई देगा, इसलिए नाम बदलना चाल भी कर सकते हैं (मुझे पता है कि यह कैसे काम करता है और मेरे साथ ठीक है, मैं उन सभी को अनदेखा करके ब्लॉब्स को फ़िल्टर करता हूं जिन्होंने किया/उनके नाम पर)।
केवल एक ही चीज काफी करीब है startCopyFromURL जो "ब्लॉब" वर्ग का सदस्य है, लेकिन मुझे इसका उपयोग करने का तरीका नहीं मिल रहा है- क्योंकि मैं केवल एक स्रोत प्रदान करता हूं लेकिन कोई गंतव्य नहीं ... मैं केवल एक साधारण कार्य के लिए पूछता हूं copyBlob(sourceBlobURL, dstBlobUrl) -.-
अजीब तरह से एज़्योर पोर्टल कोई कॉपी / नाम बदलने का विकल्प नहीं देता है, लेकिन "स्टोरेज एक्सप्लोरर" (जो एज़्योर पोर्टल के माध्यम से पहुँचा जा सकता है) नामक कुछ है और जहाँ तक मैंने इसे समझा- यह एक जीयूआई है जो कॉपी सहित ब्लॉब्स पर उन्नत संचालन को सक्षम करता है। संचालन और उप-फ़ोल्डर प्रबंधन। तो अगर ऐसा करने के लिए कोई जीयूआई है, तो प्रोग्रामेटिक तरीका होना चाहिए ...
मैं (थोड़े) नए v10 sdk (यहां) का उपयोग कर रहा हूं, केवल आवश्यकता है @ मेरी लिपि में नीला/भंडारण-बूँद भाग।
आपकी मदद के लिए एक गुच्छा धन्यवाद!
अद्यतन: मुझे "startCopyAsync" नामक एक विधि के संदर्भ मिले, लेकिन सभी उदाहरण जो मुझे ऑनलाइन मिल सकते हैं, वे sdks से विभिन्न भाषाओं (उदाहरण के लिए c#) में हैं और 1-2 वर्ष पुराने हैं, जबकि नया JS sdk आधिकारिक रूप से प्राथमिक sdk है जेएस के लिए केवल कुछ हफ्ते पहले (जुलाई '19)। नए JS sdk में इस फ़ंक्शन का कोई उल्लेख नहीं मिला।
2 जवाब
आप startCopyFromURL
का इस्तेमाल कर सकते हैं, जैसा कि आपने स्वयं माना है। स्रोत पहला तर्क है, और लक्ष्य वह ब्लॉब ऑब्जेक्ट है जिसका उपयोग आप इस विधि को कॉल करने के लिए करते हैं। तो, प्रवाह कुछ ऐसा है:
- एक लक्ष्य ब्लॉब ऑब्जेक्ट बनाएं (खाली, जिसमें आपको आवश्यक सभी उप-फ़ोल्डर शामिल हैं, जैसे
done
) - स्रोत का URL प्रदान करते हुए उस पर
startCopyFromURL
को कॉल करें - वादा समाधान की प्रतीक्षा करें।
एक गैर-जावास्क्रिप्ट उदाहरण पाया जा सकता है यहां.
आप किसी बूँद का नाम नहीं बदल सकते; आप केवल एक ब्लॉब को एक नए ब्लॉब में कॉपी कर सकते हैं (या एक नया ब्लॉब अपलोड कर सकते हैं)।
उपनिर्देशिकाओं के संबंध में: ऐसी कोई बात नहीं है। पदानुक्रम है:
account / container / blob
एक बूँद के नाम में एक उपनिर्देशिका की तरह क्या दिखता है, बस पथ वर्ण है। उदाहरण के लिए:
https://myblobs.blob.core.windows.net/mycontainer/images/image1.jpg
क्या वास्तव में "images/image1.jpg"
नाम की एक बूँद है
विभिन्न ब्लॉब-लिस्टिंग कॉल आपको उपनिर्देशिका का भ्रम देते हुए, विभाजक चरित्र का उपयोग करके फ़िल्टर करने की अनुमति देते हैं।
तो आपके मामले में, आपको अपने "संसाधित" ब्लॉब को एक नए ब्लॉब (चाहे उसी कंटेनर या नए कंटेनर में) पर अपलोड करना होगा। और अगर आप उसी कंटेनर पर अपलोड करते हैं, तो आपको एक नया नाम लेकर आना होगा। यदि आप अपने संसाधित ब्लॉब्स के लिए एक अलग कंटेनर का उपयोग करते हैं, तो आपको एक अलग ब्लॉब नाम के साथ आने के बारे में चिंता करने की आवश्यकता नहीं होगी।