दिलचस्प पोस्ट
ओआरएसीएल अद्यतन ट्रिगर करने के बाद: ओआरए-040 9 9 को उत्परिवर्तित तालिका त्रुटि सुलझाना मैं पेंड्स डेटाफ्रेम के एक कॉलम में जीरो के साथ सभी नाएन वैल्यू को कैसे बदल सकता हूँ? क्या आप यह पता लगा सकते हैं कि जिस ऑब्जेक्ट को आप deserialized किया था, वह जेएसएनएनटीटी में JsonConvert क्लास के साथ फ़ील्ड गुम था जावास्क्रिप्ट: ऑपरेटर ओवरलोडिंग SQL सर्वर में पिछले महीने के पहले और अंतिम दिन (टाइमस्टैम्प के साथ) कैसे प्राप्त करें आम lisp त्रुटि: "लैम्ब्डा अभिव्यक्ति होना चाहिए" लेक्जर- और पार्सर नियमों के अंदर नज़र करना आईफ़ोन: यूट्यूबटाइम के पृष्ठभूमि कूलर को कैसे सेट करें बटन टाइप करें UIButtonTypeCustom मैं अधिकतम (कॉलम मान) के साथ पंक्तियों का चयन कैसे कर सकता हूं, SQL में दूसरे कॉलम से अलग? * क्लासीफ़ फ़ाइल को लोड करने के लिए URLClassLoader का उपयोग कैसे करें? "पूर्णता" प्रवाह इतनी अच्छी तरह से काम करता है, जब OAuth2 में "प्राधिकरण कोड" प्रवाह क्यों है? Serializable क्या मतलब है? HTML5 ऑडियो लूपिंग त्रुटि: कोई संसाधन नहीं मिला जो दिए गए नाम से मेल खाता है ('चिह्न' के साथ 'चिह्न' / चिह्न '@' टीटीक में प्रगति बार डाउनलोड करने के लिए कैसे?

कैसे एक फ़ाइल नाम के रूप में अपलोड एक Blob FormData?

मैं वर्तमान में निम्नलिखित कोड के साथ क्लिपबोर्ड से चिपक गई छवियां अपलोड कर रहा हूं:

// Turns out getAsFile will return a blob, not a file var blob = event.clipboardData.items[0].getAsFile(), form = new FormData(), request = new XMLHttpRequest(); form.append("blob",blob); request.open( "POST", "/upload", true ); request.send(form); 

अपलोड फॉर्म फ़ील्ड को इस प्रकार से एक नाम प्राप्त करें: Blob157fce71535b4f93ba92ac6053d81e3a

कोई भी सर्वर साइड संचार किए बिना, इस फाइल नाम क्लाइंट साइड को सेट करने या प्राप्त करने का कोई तरीका है?

Solutions Collecting From Web of "कैसे एक फ़ाइल नाम के रूप में अपलोड एक Blob FormData?"

क्रोम और फ़ायरफ़ॉक्स के लिए, इसका उपयोग करें:

 form.append("blob",blob, filename); 

( एमडीएन दस्तावेज़ीकरण देखें)

इसे यहां जोड़ना क्योंकि यहां ऐसा नहीं लगता है

form.append("blob",blob, filename); के उत्कृष्ट समाधान के अलावा। form.append("blob",blob, filename); आप ब्लॉब को एक File इंस्टेंस में भी बदल सकते हैं:

 var blob = new Blob([JSON.stringify([0,1,2])], {type : 'application/json'}); var fileOfBlob = new File([blob], 'aFileName.json'); form.append("upload", fileOfBlob); 

चूंकि आपको क्लिपबोर्ड पर चिपकाए गए डेटा प्राप्त हो रहा है, इसलिए फ़ाइल के मूल और इसके गुणों (नाम सहित) को जानने का कोई विश्वसनीय तरीका नहीं है।

तुम्हारा सबसे अच्छा शर्त है कि आप अपनी फाइल नामकरण योजना के साथ आए और ब्लॉब के साथ भेज दें।

 form.append("filename",getFileName()); form.append("blob",blob); function getFileName() { // logic to generate file names } 

इसका परीक्षण नहीं किया है, लेकिन उसे ब्लॉब्स डेटा यूआरएल को सतर्क करना चाहिए:

 var blob = event.clipboardData.items[0].getAsFile(), form = new FormData(), request = new XMLHttpRequest(); var reader = new FileReader(); reader.onload = function(event) { alert(event.target.result); // <-- data url }; reader.readAsDataURL(blob); 

यह नाम एक वस्तु URL GUID से प्राप्त होता है उस ऑब्जेक्ट यूआरएल को प्राप्त करने के लिए निम्नलिखित करें जिसे नाम से प्राप्त किया गया था।

 var URL = self.URL || self.webkitURL || self; var object_url = URL.createObjectURL(blob); URL.revokeObjectURL(object_url); 

object_url को blob:{origin}{GUID} रूप में स्वरूपित किया जाएगा blob:{origin}{GUID} Google क्रोम में और moz-filedata:{GUID} फ़ायरफ़ॉक्स में moz-filedata:{GUID} । एक प्रोटोकॉल प्रोटोकॉल + होस्ट + प्रोटोकॉल के लिए गैर मानक पोर्ट है। उदाहरण के लिए, blob:http://stackoverflow.com/e7bc644d-d174-4d5e-b85d-beeb89c17743 या blob:http://[::1]:123/15111656-e46c-411d-a697-a09d23ec9a99 आप शायद GUID निकालना चाहते हैं और किसी भी डैश को पट्टी कर सकते हैं।

यह वाकई इस बात पर निर्भर करता है कि दूसरे पक्ष के सर्वर को कैसे कॉन्फ़िगर किया गया है और किस प्रकार से यह एक ब्लॉब पोस्ट को कैसे प्रबंधित करता है, इसके आधार पर। आप अपना पद के लिए इच्छित नाम को पथ में डालने का प्रयास कर सकते हैं।

 request.open( "POST", "/upload/myname.bmp", true ); 

क्या आप Google App Engine का प्रयोग कर रहे हैं? आप फ़ाइल नामों और सर्वर से प्राप्त नाम के बीच के रिश्ते को बनाए रखने के लिए कुकीज़ (जावास्क्रिप्ट के साथ बनाया) का उपयोग कर सकते हैं।

जब आप Google Chrome का उपयोग कर रहे हैं तो आप इस के लिए Google Filesystem API उपयोग / दुरुपयोग कर सकते हैं। यहां आप एक निर्दिष्ट नाम के साथ एक फ़ाइल बना सकते हैं और इसे एक ब्लॉब की सामग्री लिख सकते हैं। फिर आप परिणाम को उपयोगकर्ता को वापस कर सकते हैं।

फ़ायरफ़ॉक्स के लिए मुझे एक अच्छा तरीका नहीं मिला है; संभवतः फ्लैश का एक छोटा सा टुकड़ा, जैसे downloadify करने के लिए एक ब्लॉब नाम की आवश्यकता है।

IE10 में msSaveBlob() में एक msSaveBlob() फ़ंक्शन है

शायद यह एक ब्लॉब डाउनलोड करने के लिए अधिक है, लेकिन यह संबंधित है।