मुझे एक मूल HTML फॉर्म मिला है जिसमें से मैं थोड़ी सी जानकारी ले सकता हूं जिसे मैं फायरबग में जांच रहा हूं।
मेरा एकमात्र मुद्दा यह है कि मैं सर्वर पर भेजे जाने से पहले फ़ाइल डेटा को बेस 64 में एनकोड करने का प्रयास कर रहा हूं , जहां डेटाबेस को सहेजने के लिए उस रूप में होना आवश्यक है।
<input type="file" id="fileupload" />
और जावास्क्रिप्ट + jQuery में:
var file = $('#fileupload').attr("files")[0];
मेरे पास कुछ उपलब्धियाँ हैं जो कि उपलब्ध जावास्क्रिप्ट पर आधारित हैं: .getAsBinary (), .getAsText (), .getAsTextURL।
हालाँकि, इनमें से कोई भी उपयोग करने योग्य पाठ वापस नहीं करता है, क्योंकि उन्हें अनुपयोगी 'वर्ण' सम्मिलित किए जा सकते हैं - मैं नहीं चाहता कि मेरी फ़ाइल अपलोड में कोई 'पोस्टबैक' हो, और मुझे विशिष्ट वस्तुओं को लक्षित करने वाले कई रूपों की आवश्यकता है इसलिए यह महत्वपूर्ण है फ़ाइल प्राप्त करें और इस तरह जावास्क्रिप्ट का उपयोग करें।
मुझे फ़ाइल को इस तरह से कैसे प्राप्त करना चाहिए कि मैं जावास्क्रिप्ट बेस 64 एनकोडर में से एक का उपयोग कर सकता हूं जो व्यापक रूप से उपलब्ध हैं !?
धन्यवाद
अद्यतन - यहाँ बाउंटी शुरू करने, क्रॉस ब्राउज़र समर्थन की आवश्यकता है !!!
यहाँ मैं यहाँ हूँ:
<input type="file" id="fileuploadform" />
<script type="text/javascript">
var uploadformid = 'fileuploadform';
var uploadform = document.getElementById(uploadformid);
/* method to fetch and encode specific file here based on different browsers */
</script>
क्रॉस ब्राउज़र समर्थन के साथ मुद्दों की जोड़ी:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
इसके अलावा, IE समर्थन नहीं करता है:
var file = $j(fileUpload.toString()).attr('files')[0];
इसलिए मुझे इसके साथ प्रतिस्थापित करना होगा:
var element = 'id';
var element = document.getElementById(id);
IE समर्थन के लिए।
यह फ़ायरफ़ॉक्स, क्रोम और, सफारी में काम करता है (लेकिन फ़ाइल को ठीक से एनकोड नहीं करता है, या कम से कम इसे पोस्ट करने के बाद फ़ाइल बाहर नहीं आती है)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
इसके अलावा,
file.readAsArrayBuffer()
केवल HTML5 में समर्थित माना जाता है?
बहुत से लोगों ने सुझाव दिया: http://www.webtoolkit.info/javascript-base64.html
लेकिन यह केवल बेस 64 एनकोड करने से पहले UTF_8 विधि पर एन एरर देता है? (या एक खाली स्ट्रिंग)
var encoded = Base64.encode(file);