ब्लॉब यूआरएल (रेफरी डब्ल्यू 3 सी , आधिकारिक नाम) या ऑब्जेक्ट-यूआरएल (रेफरी एमडीएन और विधि का नाम) का उपयोग ब्लॉब या फाइल ऑब्जेक्ट के साथ किया जाता है ।
src = "blob: https: //crap.crap " मैंने वह बूँद url खोली जो वीडियो के src में थी, इसने एक त्रुटि दी और मैं नहीं खोल सकता लेकिन src टैग के साथ काम कर रहा था कि यह कैसे संभव है?
ब्लॉब यूआरएल केवल ब्राउज़र द्वारा आंतरिक रूप से उत्पन्न किया जा सकता है। URL.createObjectURL()
बूँद या फ़ाइल ऑब्जेक्ट के लिए एक विशेष संदर्भ बनाएगा जिसे बाद में उपयोग करके जारी किया जा सकता है URL.revokeObjectURL()
। ये URL केवल स्थानीय रूप से ब्राउज़र के एकल उदाहरण और उसी सत्र में उपयोग किए जा सकते हैं (अर्थात पृष्ठ / दस्तावेज़ का जीवन)।
बूँद url क्या है?
इसका उपयोग क्यों किया जाता है?
Blob URL / Object URL एक छद्म प्रोटोकॉल है, जिससे Blob और File वस्तुओं को URL स्रोत के रूप में उपयोग किया जा सकता है, जैसे कि छवियों, द्विआधारी डेटा के लिए लिंक और इसके बाद के संस्करण।
उदाहरण के लिए, आप एक इमेज ऑब्जेक्ट रॉ बाइट-डेटा को हाथ नहीं लगा सकते क्योंकि यह नहीं पता होगा कि इसके साथ क्या करना है। इसके लिए उदाहरण चित्रों (जो बाइनरी डेटा हैं) को URL के माध्यम से लोड करना होगा। यह ऐसे किसी भी चीज़ पर लागू होता है जिसके लिए स्रोत के रूप में URL की आवश्यकता होती है। बाइनरी डेटा अपलोड करने के बजाय, फिर इसे एक यूआरएल के माध्यम से वापस परोसें। सर्वर से गुजरे बिना डेटा को सीधे एक्सेस करने में सक्षम होने के लिए एक अतिरिक्त स्थानीय कदम का उपयोग करना बेहतर है।
यह डेटा-यूआरआई का एक बेहतर विकल्प भी है जो स्ट्रिंग्स बेस -64 के रूप में एन्कोडेड हैं । डेटा-यूआरआई के साथ समस्या यह है कि प्रत्येक चार्ट जावास्क्रिप्ट में दो बाइट्स लेता है। उसके ऊपर बेस -64 एनकोडिंग के कारण 33% जोड़ा जाता है। ब्लब्स शुद्ध बाइनरी बाइट-एरे हैं, जिनके पास कोई महत्वपूर्ण ओवरहेड नहीं है जैसा कि डेटा-यूआरआई करता है, जो उन्हें संभालने के लिए तेज और छोटा बनाता है।
क्या मैं किसी सर्वर पर अपनी खुद की ब्लॉन्ड यूआरएल बना सकता हूं?
नहीं, ब्लॉब यूआरएल / ऑब्जेक्ट यूआरएल केवल ब्राउज़र में आंतरिक रूप से बनाए जा सकते हैं। आप ब्लॉब्स बना सकते हैं और फाइल रीडर एपीआई के माध्यम से फाइल ऑब्जेक्ट प्राप्त कर सकते हैं, हालांकि BLOB का अर्थ केवल बाइनरी लार्ज OBject है और इसे बाइट-एरे के रूप में संग्रहीत किया जाता है। एक ग्राहक ArrayBuffer के रूप में या एक बूँद के रूप में भेजे जाने के लिए डेटा का अनुरोध कर सकता है। सर्वर को डेटा को शुद्ध बाइनरी डेटा के रूप में भेजना चाहिए। डेटाबेस अक्सर बाइनरी ऑब्जेक्ट्स का वर्णन करने के लिए ब्लॉब का उपयोग करता है, और संक्षेप में हम मूल रूप से बाइट-एरे के बारे में बात कर रहे हैं।
यदि आपके पास फिर अतिरिक्त विवरण है
आपको बाइनरी डेटा को BLOB ऑब्जेक्ट के रूप में एनकोड करना होगा, फिर इसके लिए URL.createObjectURL()
एक स्थानीय URL उत्पन्न करने के लिए उपयोग करें:
var blob = new Blob([arrayBufferWithPNG], {type: "image/png"}),
url = URL.createObjectURL(blob),
img = new Image();
img.onload = function() {
URL.revokeObjectURL(this.src); // clean-up memory
document.body.appendChild(this); // add image to DOM
}
img.src = url; // can now "stream" the bytes
ध्यान दें कि URL
वेबकिट-ब्राउज़र में उपसर्ग किया जा सकता है, इसलिए उपयोग करें:
var url = (URL || webkitURL).createObjectURL(...);