2010-02-18 8 views
6

तो - मैं थोड़ी देर के लिए फ़ाइल अपलोड करने की इस विधि का उपयोग कर रहा हूं, लेकिन ऐसा लगता है कि Google Gears के पास नए ब्राउज़र के लिए खराब समर्थन है जो HTML5 चश्मे को लागू करता है। मैंने deprecated कुछ चैनलों के चारों ओर तैरते हुए शब्द सुना है, इसलिए मैं एक प्रतिस्थापन की तलाश में हूं जो निम्नलिखित कार्यों को पूरा कर सकता है, और नए ब्राउज़र का समर्थन कर सकता है। मैं हमेशा गियर/मानक फ़ाइल पोस्ट की पर वापस आ सकते हैं, लेकिन इन निम्नलिखित मदों मेरी प्रक्रिया बहुत सरल बनाने:जावास्क्रिप्ट और Google गियर्स के साथ फ़ाइल अपलोड हैंडलिंग, क्या कोई बेहतर समाधान है?

  1. उपयोगकर्ता MUST संवाद में अपलोड करने के लिए एकाधिक फ़ाइलों का चयन करने में सक्षम हो।
  2. I फ़ाइल के संचरण पर स्थिति अपडेट प्राप्त करने में सक्षम होना चाहिए। (बार प्रगति)
  3. मैं चाहूँगा आसानी से जावास्क्रिप्ट का उपयोग मौजूदा HTML तत्वों में इन घटनाओं संलग्न करने के लिए सक्षम होने के लिए POST
  4. मैं चाहूँगा के बजाय PUT अनुरोधों का उपयोग करने में सक्षम हो। अर्थात। फ़ाइल चयन <button> क्लिक पर ट्रिगर किया जाना चाहिए।
  5. मैं जावास्क्रिप्ट का उपयोग करके आसानी से प्रतिक्रिया/अनुरोध पैरामीटर को नियंत्रित करने में सक्षम होना चाहता हूं।

मुझे यकीन नहीं है कि नए HTML5 ब्राउज़र डेस्कटॉप/अनुरोध ऑब्जेक्ट्स गियर का उपयोग करने के लिए समर्थन करते हैं, या यदि कोई फ्लैश अपलोडर है जिसमें इन सुविधाओं की मेरी Google खोज में अनुपलब्ध है।

गियर अपलोडिंग कोड का उपयोग का एक उदाहरण:

// select some files: 
var desktop = google.gears.factory.create('beta.desktop'); 
desktop.openFiles(selectFilesCallback); 

function selectFilesCallback(files) { 
    $.each(files,function(k,file) { 
    // this code actually goes through a queue, and creates some status bars 
    // but it is unimportant to show here... 
    sendFile(file); 
    }); 
} 

function sendFile(file) { 
    google.gears.factory.create('beta.httprequest'); 
    request.open('PUT', upl.url); 
    request.setRequestHeader('filename', file.name); 
    request.upload.onprogress = function(e) { 
    // gives me % status updates... allows e.loaded/e.total 
    }; 
    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     // completed the upload! 
    } 
    }; 
    request.send(file.blob); 
    return request; 
} 

संपादित करें: जाहिरा तौर पर फ्लैश PUT अनुरोध उपयोग करने में सक्षम नहीं है, इसलिए मैं "की तरह" के बजाय एक "चाहिए" एक करने के लिए इसे बदल दिया है ।

+0

बस चिमिंग: फ़ायरफ़ॉक्स 3.6 एचटीएमएल 5 फ़ाइल एपीआई का समर्थन करता है। इस पृष्ठ को डेमो के लिए एफएफ 3.6 में खोलें :) http://demos.hacks.mozilla.org/openweb/FileAPI/ –

+0

http://www.element-it.com/multiple-file-upload/flash-uploader। एएसपीएक्स आप जो करना चाहते हैं उसके लिए एक एसडब्ल्यूएफ नियंत्रण है। –

+0

@ टोडड मूसा - यह ठीक दिखता है, लेकिन $ 99 मूल्य टैग ने मुझे swfupload को देखा है, इनमें से कोई भी समर्थन 'PUT' अनुरोध नहीं है, जिसे मुझे आसपास काम करना पड़ सकता है ... (मुझे पूरा यकीन है कि PUT के लिए समर्थन है फ्लैश/फ्लेक्स में बस गायब) – gnarf

उत्तर

1

(मूल प्रश्न पर एक टिप्पणी से उत्पन्न प्रति askers के सुझाव।)

plupload ब्लॉक पर नवीनतम बच्चों में से एक है और यह सबसे अच्छा तरीका उपलब्ध का उपयोग करता है (एचटीएमएल 5, फ्लैश, गियर्स, Silverlight) : http://plupload.com/

1

मैंने पहले फ्लैश आधारित जैसे http://www.webresourcesdepot.com/open-source-flash-uploader-multi-bit-shift/ का उपयोग किया है। वे ठीक काम करते हैं और फ्लैश पर निर्भर होने पर अधिकांश कंप्यूटरों पर काम करना चाहिए। मुझे अकेले जेएस के साथ ऐसा करने का एक विश्वसनीय तरीका नहीं मिला है लेकिन फ्लैश को जेएस के साथ नियंत्रित किया जा सकता है - खासकर अगर आप अपना लिखते हैं।

उम्मीद है कि इससे मदद मिलती है।

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