2013-05-26 8 views
35

मैं एक क्रोम एक्सटेंशन जो निम्नलिखित करता है लिख रहा हूँ है:"हे भगवान" जब डेटा uri बहुत बड़ी

  1. XMLHttpRequest
  2. का उपयोग कर स्मृति के लिए एक वेबसाइट से ऐसी फ़ाइल डाउनलोड करने के लिए अतिरिक्त डेटा जोड़ दिया फ़ाइल और फिर बेस 64 परिणामस्वरूप परिवर्तनीय total_encoded_data
  3. <a href=data:application/octet-stream;charset=utf-8;base64,' + total_encoded_data+' download='file.bin'>Click to Download</a> का उपयोग कर उपयोगकर्ता को डेटा प्रदान करता है। जहां jQuery का उपयोग कर total_encoded_data को href में जोड़ा गया है।

मैं एक मैनुअल द्विआधारी खोज के माध्यम से, पाया है, कि अगर total_encoded_data के आकार से अधिक 2,097,100 वर्ण है, तो मैं एक हे भगवान संदेश जब मैं लिंक पर क्लिक करें मिल जाएगा। यदि आकार छोटा है, तो मैं उम्मीद के अनुसार डाउनलोड कर सकता हूं।

फाइलसाइज़ का परीक्षण करने के अलावा, मैंने यह सुनिश्चित करने के लिए atoi भी उपयोग किया है कि बेस 64 एन्कोडिंग मान्य है, और यह बिना त्रुटि के संचालित होता है।

हे भगवान संदेशों chrome://crashes में किसी भी क्रैश रिपोर्ट और न ही chrome_debug.log

कैसे जब एक डेटा uri जहां बेस 64 इनकोडिंग स्ट्रिंग की लंबाई है की सेवा मैं एक हे भगवान संदेश से बचने कर में किसी भी अप्रत्याशित उत्पादन का उत्पादन नहीं करते 20 9 7100 से अधिक?

उत्तर

44

यह known chromium bug है। अनुशंसित कामकाज blob URL का उपयोग करना है। Creating a Blob from a base64 string in JavaScript भी देखें।

+30

3.5 साल बाद ... अभी भी तय नहीं है। भगवान इसे डर, क्रोम। – kangax

+5

लगभग 7 साल बाद ... और ब्लॉब यूआरएल चाल के साथ वही पुरानी समस्या हल हो गई! – aBertrand

+2

लगभग आठ .. यह दुखद है .. –

संबंधित मुद्दे