2012-12-17 14 views
5

पर फ़ाइल अपलोड करें मैं प्ले फ्रेमवर्क 2.0, जावास्क्रिप्ट और वेबसाकेट्स का उपयोग कर रहा हूं। उदाहरण के तौर पर मेरे पास एक AKKA अभिनेता है जिसमें सभी वेबसाइकिलों का ज्ञान है। एकल WebSockets.In में एक श्रोता कॉलबैक ऑब्जेक्ट है जो क्लाइंट साइड से आने वाले अनुरोधों को संभालता है। क्लाइंट पक्ष पर मेरे पास जावास्क्रिप्ट पर जेएसओएन में क्रमबद्ध फॉर्मूलेरियल डेटा भेजने के लिए जावास्क्रिप्ट/jquery है। यह सरल इनपुट के लिए बहुत अच्छी तरह से काम करता है। लेकिन अब मैं एक फाइल के साथ ऐसा करना चाहता हूं। इसलिए मुझे किसी भी तरह से फ़ाइल डेटा को JSON डेटा (जैसे बेस 64) में परिवर्तित करना होगा। क्या कोई जानता है कि यह ठीक से कैसे करें? मैं जावास्क्रिप्ट के भीतर फ़ाइल को "संग्रह" करना चाहता हूं और फिर इसे जेएसओएन के जरिए वेबस्केट पर भेजना चाहता हूं। मुझे पता है कि बेस 64 बहुत कुशल नहीं है, अगर किसी के पास कोई विकल्प है, तो कृपया मुझे बताएं।फ़ाइलवर्क के माध्यम से फ़ाइल फ्रेमवर्क 2.0

धन्यवाद

उत्तर

4

यह संभव है, हालांकि आपको WebSocket और FileReader API का उपयोग करना होगा, जो केवल नए ब्राउज़र पर समर्थित हैं। जावास्क्रिप्ट अब TypedArray डेटाटाइप है, जिसका उपयोग बाइट्स को स्थानांतरित करने के लिए किया जा सकता है।

​<form> 
    <input type="file" id="picture" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

आप फ़ाइल इनपुट क्षेत्र पर change घटना निरीक्षण करने की आवश्यकता: उदाहरण के लिए, निम्न HTML दिया। जावास्क्रिप्ट पक्ष (jQuery) पर:

$("#picture").change(function(){ 
    var reader = new FileReader; 

    reader.onloadend = function (bytes) { 
     var ws = new WebSocket("ws://host/path"); 
     ws.send(bytes);   
    } 

    reader.readAsArrayBuffer(this.files[0]); 
}​);​ 

WebSocket PDU न्यूनतम लिए बने होते हैं (केवल दो बाइट हैडर), और जब आप send(), ब्राउज़र बाइनरी स्थानांतरण के लिए उचित opcode की स्थापना का ध्यान रखना चाहिए, और सर्वर पर आप कच्चे बाइट्स की धारा को पढ़ने में सक्षम होना चाहिए। मैं अब न्यूनतम एपीआई उदाहरण प्रदान करने के लिए Play API देख रहा हूं।

0

मैं WebSockets के माध्यम से फ़ाइल अपलोड के बारे में पता नहीं है, लेकिन सादे पुराने HTTP के माध्यम से यह FormData और XMLHttpRequest वस्तुओं का उपयोग कर सकता है। इस article पर एक नज़र डालें।

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