2014-07-14 12 views
8

का उपयोग कर मैं अपने वेब आवेदन करने के लिए फ़ाइलों को अपलोड करने एचटीएमएल 5 फ़ाइल एपीआई का उपयोग कर रहा हूँ यूआरएल पर संग्रहीत फ़ाइल।पढ़ें कुछ एचटीएमएल 5 फ़ाइल एपीआई

मैं का उपयोग कर जो मैं फ़ाइलों को पढ़ने और अपलोड समारोह

<input type="file"> 

$('input[type="file"]').on("change",function(e){ 
     console.log(this.files); 
     // upload each file in this.files 
}); 

इस ओएस पर देशी फ़ाइलों के लिए पूरी तरह से काम करता है फोन मेरे वेब पृष्ठ पर कोई इनपुट तत्व है। मैं अब दूरस्थ फाइलों को अपलोड करना चाहता हूं उदा। उदाहरण example_blah/file1.jpg मेरा प्रश्न यह है कि मैं फ़ाइल एपीआई का उपयोग करके इस फाइल को कैसे पढ़ूं? क्या इसे करने का कोई तरीका है?

+0

बस एक उपयोगकर्ता यूआरएल पेस्ट करने के लिए किसी पाठ बॉक्स प्रदान करते हैं। फिर सर्वर की तरफ आप यूआरएल के आधार पर फाइल को पुनः प्राप्त कर सकते हैं। – mason

+1

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

+0

आपको उपयोगकर्ता के कंप्यूटर पर डाउनलोड करने की आवश्यकता क्यों है, फिर सर्वर पर अपलोड करें? यह एक अतिरिक्त कदम है। जावास्क्रिप्ट की स्मृति में इसे संग्रहीत करना खराब प्रदर्शन के साथ-साथ उपयोगकर्ता की बैंडविड्थ को खाएगा। – mason

उत्तर

8

आप XMLHttpRequest से अधिक दूरस्थ फ़ाइलों को डाउनलोड, और उन्हें Blob के रूप में संसाधित कर सकें। फिर इसे किसी अन्य सर्वर पर अपलोड करें। अपलोड XMLHttpRequest से अधिक होना चाहिए। यह एक्सएचआर स्तर 2. ब्राउज़र के कार्यान्वयन पर निर्भर करता है इस कड़ी में कोड के टुकड़े आप की आवश्यकता होगी शामिल हैं:

http://www.html5rocks.com/en/tutorials/file/xhr2/

यह एक Blob के रूप में दूरदराज फ़ाइल डाउनलोड करने और एक सर्वर के लिए एक Blob अपलोड करने के लिए दोनों के टुकड़े है।

+0

धन्यवाद बाघ, यह एक आकर्षण की तरह काम किया, सिवाय मैं सभी मेटाडाटा खो जब मैं कहता हूँ वर ब्लॉब = नए ब्लॉब ([this.response], {प्रकार: 'छवि/png'}); ऐसा करने के बाद मैं फ़ाइल नाम कैसे प्राप्त करूं? – sublime

+0

@sublime: मैं वहाँ "फ़ाइल नाम" अगर हम नेटवर्क पर एक फ़ाइल को पुन: प्राप्त कर रहे हैं नहीं लगता। कहें कि यह '/ download? Id = 1234' है, बिल्कुल कोई फ़ाइल नाम नहीं है। तो आपको फ़ाइल नाम प्राप्त करने के बारे में अपने नियम स्थापित करने की आवश्यकता है। आप सबसे अधिक ब्राउज़रों का पालन कर सकते हैं: 1. यूआरआई पथ का अंतिम भाग लें और इसे फ़ाइल के रूप में देखें; 2. यदि प्रतिक्रिया शीर्षलेख में 'सामग्री-स्वभाव' मौजूद है, तो मानक का पालन करें और फ़ाइल नाम के रूप में इसमें क्या उपयोग करें। –

+0

धन्यवाद, एक आखिरी सवाल: कुछ छवि यूआरएल जो मुझे मिल रही हैं बेस 64 एन्कोडेड डेटा स्ट्रिंग्स हैं। डेटा: छवि/जेपीईजी; बेस 64,/9जे/4एएचक्यूएसकेजेजेआरजीएबीएचक्यू ... और जब यह मामला ब्राउज़र एक त्रुटि फेंकता है कि XMLHttpRequest डेटा लोड नहीं कर सकता है: छवि, क्रॉस मूल अनुरोध केवल HTTP के लिए समर्थित हैं। मैं उन छवियों को कैसे डाउनलोड करूं? – sublime

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