2011-08-27 9 views
7

तो मैं एक वेब अनुप्रयोग, जहां एक उपयोगकर्ता की आवश्यकता होगी पर काम कर रहा हूँ:जावास्क्रिप्ट: क्रॉस-ब्राउज़र serverless फाइल अपलोड और डाउनलोड

  • उनके परिणाम को बचाने पर काम करने के लिए एक फ़ाइल डेटा का पूरा प्रदान करते हैं एक फ़ाइल

सभी मैनिपुलेशन जावास्क्रिप्ट में किया जाता है, इसलिए मुझे वास्तव में सर्वर-साइड कोड की आवश्यकता नहीं है (केवल स्थैतिक होस्टिंग), और मुझे यह पसंद है।

Firefox में, मैं उनके file manipulation api उपयोग कर सकते हैं एक उपयोगकर्ता क्लाइंट-साइड कोड में सीधे एक फ़ाइल अपलोड करने (एक मानक <input type=file/> का प्रयोग करके) की अनुमति के लिए और एक फ़ाइल से बाहर एक वस्तु URL बनाने तो एक उपयोगकर्ता बनाया एक फ़ाइल को बचा सकता है क्लाइंट-साइड कोड द्वारा।

<input type="file" id="input" onchange="handleFiles(this.files)"> 
<a download="doubled" id="ex">right-click and save as</a> 
<script> 
    function handleFiles(fileList){ 
    var builder = new MozBlobBuilder(); 
    var file = fileList[0]; 
    var text = file.getAsBinary(); 
    builder.append(text); 
    builder.append(text); 
    document.getElementById('ex').href = window.URL.createObjectURL(builder.getBlob()); 
    } 
</script> 

तो यह बहुत अच्छा है। अब मैं अन्य ब्राउज़रों में ऐसा करना चाहता हूं - या, कम से कम, अन्य ब्राउज़रों के आधुनिक संस्करण। क्रोम और आईई के लिए समान एपीआई मौजूद हैं? यदि हां, तो क्या किसी ने पहले से ही एक क्रॉस-ब्राउज़र रैपर बनाया है जिसका मुझे उपयोग करना चाहिए?

उत्तर

1

यह Firefox 3.6+, Chrome 10+, ओपेरा 11.1+ पर ज्यादातर उपलब्ध है, और उम्मीद है कि सफारी 6 और IE 10

देखें: http://caniuse.com/#search=FileReader

+0

यय! यह वास्तव में निफ्टी उपकरण है। – rampion

1

FileSaver.js और a[download] attribute (क्रोम देव चैनल में समर्थित) देखें। ब्लॉब (ऑब्जेक्ट) यूआरएल में अभी कुछ हद तक limited support है।

+0

भयानक - मैंने अभी यह पता लगाया था कि मुझे उत्पन्न सामग्री को बचाने के लिए मुझे ब्लॉब यूआरएल की तरह कुछ चाहिए था। – rampion

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