2010-02-27 23 views
6

क्या फ्लैश या सिल्वरलाइट का उपयोग किए बिना फ़ाइल अपलोड कतार करने का कोई तरीका है, बस चालाकी से प्रयुक्त रूपों और जावास्क्रिप्ट के साथ? ध्यान दें कि अपलोड को असीमित रूप से निष्पादित किया जाना चाहिए।एसिंक्रोनस HTTP फ़ाइल अपलोड करना

अपलोड "क्यूइंग" द्वारा मेरा मतलब है कि यदि उपयोगकर्ता एकाधिक फ़ाइलों को अपलोड करने का प्रयास करता है, तो उन्हें एक ही समय में एक ही HTTP कनेक्शन में स्थानांतरित नहीं किया जाना चाहिए।

+0

क्या यह एक HTTP कनेक्शन होना चाहिए? –

+0

हां। यह मेरे प्रश्न का मुद्दा है। – dpq

+0

प्रश्न: यदि आप एकाधिक फाइलों के साथ एक फॉर्म जमा करते हैं, तो क्या वे सभी एक ही समय में भेजे जाते हैं, या 1 के बाद 1? –

उत्तर

2

मुझे विश्वास नहीं है कि यह spec की सीमाओं के कारण, एक HTTP कनेक्शन पर ऐसा करना संभव है। हालांकि, आप <input> फ़ील्ड को अलग-अलग रूपों में रखकर लगभग समान व्यवहार प्राप्त कर सकते हैं (इसे HTML या जावास्क्रिप्ट के साथ रखें) और उन्हें क्रम में सबमिट कर सकते हैं।

अपने लक्ष्य को पर रखें और सूची में अगला फॉर्म ट्रिगर करने के लिए iframe.onload ईवेंट का उपयोग करें।

अतिरिक्त नोट्स:

  • संदर्भ को लक्षित iframes के लिए देखें this। ध्यान दें कि यह सुविधा HTML/XHTML सख्त में असमर्थित है।
  • form.target विशेषता iframe.name विशेषता के बराबर होनी चाहिए। iframe.id काम नहीं करेगा; यह आईई 6 और एफएफ 3.5 में पॉप-अप विंडो का कारण बनता है।
  • लक्ष्यीकरण का उपयोग करके 'सभी एक बार' अपलोड करने का एक उदाहरण उदाहरण here उपलब्ध है। मैंने इस उदाहरण को थोड़ा सा साफ कर लिया है और इसका इस्तेमाल किया है। यह आईई 6 के साथ-साथ किसी भी प्रथम श्रेणी के ब्राउज़र में काम करता है।
+0

मुझे बताएं कि यह आपके लिए काम करता है या नहीं। मैंने ऐसा कुछ करने की कोशिश करने के बारे में सोचा लेकिन समय नहीं था। – Kivin

1

एक विकल्प जो मैंने पहले देखा है, हालांकि मेरे पास कोई लिंक या उदाहरण नहीं है, तो एक आईफ्रेम का उपयोग करें। असल में, फ़ाइलों को iframe और जावास्क्रिप्ट घड़ियों को सबमिट किया जाता है यह देखने के लिए कि iframe फिर से लोड हो जाता है और फिर अगला सबमिट करता है। यह सुंदर नहीं है और मुझे लगता है कि मैंने कोशिश की, लेकिन इसे ब्राउज़रों में काम करने के लिए नहीं मिला (जिसे मुझे उस समय की आवश्यकता थी, जिसमें आईई 6 भी शामिल था)।

+0

ठीक है, धन्यवाद। मैं इसे लागू करने की कोशिश करूंगा। क्या आपको याद है कि आपको किस ब्राउजर के साथ परेशानी हुई है? – dpq

+0

मुझे विश्वास है कि अन्य आईई के साथ सबसे कठिन आईई 6 था, लेकिन मुझे लगता है कि 7 और 8 ठीक थे। यह थोड़ी देर हो गया है और मैंने अपने सभी टेस्ट कोड को हटा दिया है क्योंकि मैं फ्लैश का उपयोग करने के साथ ठीक था क्योंकि इसका इस्तेमाल पहले से ही साइट पर किया गया था। –

2

मेरे पास यह अच्छा अधिकार है कि Uploadify बहुत अच्छा है। इसके अलावा, यह मूल रूप से कतारों का समर्थन करता है। एक साधारण उदाहरण, जो मानता है कि आपने "foo" की आईडी के साथ पहले से ही "फ़ाइल" तत्व बनाया है और "कतार" की आईडी के साथ कतार के रूप में उपयोग करने के लिए एक तत्व बनाया है। अधिक जानकारी के लिए docs देखें।

$("foo").uploadify({ 
    'uploader' : 'uploadify.swf', 
    'script' : 'uploadify.php', 
    'cancelImg' : 'cancel.png', 
    'auto'  : true, 
    'folder' : '/uploads', 
    'queue'  : "queue" 
}); 
+0

अपलोड करने के लिए फ्लैश की आवश्यकता है, जबकि मैं ऐसे समाधान की तलाश में हूं जो नहीं करता है। – dpq

+0

ओह, ठीक है। मुझे खेद है, मैं पूरी तरह से उस आवश्यकता के बारे में भूल गया। जिज्ञासा से, आप फ़्लैश से बचने के लिए क्यों चाहते हैं? अपलोडिफ़ाई को फ़्लैश के साथ किसी भी बातचीत की आवश्यकता नहीं होती है, यह आपके लिए इसे लपेटती है। – Benson

+0

प्रश्न में वेब ऐप के विनिर्देशों के कारण, इसकी बिक्री बिंदुओं में से एक यह है कि प्लगइन को किसी भी वास्तविक कार्य को करने की आवश्यकता नहीं होती है। चूंकि फ़ाइलों को अपलोड करना एक बहुत बड़ा काम है, इसलिए मैं फ्लैश के आधार पर बचाना चाहता हूं। – dpq

0

मोटे तौर पर, इसे देख क्या किया जाना चाहिए:

  • एक समारोह गतिशील रूप से फ़ाइल के रूप में इनपुट प्रकार के साथ (एचटीएमएल के लिए) रूपों जोड़ने के लिए। एक फॉर्म में केवल एक फ़ाइल इनपुट फ़ील्ड होगा। ये फॉर्म हमारी फ़ाइल अपलोड कतार होगी।
  • एक सबमिट फ़ंक्शन जो इन रूपों को एक दूसरे के बाद असीमित रूप से सबमिट करेगा।

यह सरल तर्क है कि मैं अब सोच सकता हूं [मुझे घर आने पर कोड करना है]।

0

यदि आप .NET और अधिक विशेष रूप से Asp.Net MVC समाधान की तलाश में हैं, तो इस पोस्ट को देखें, http://dimebrain.com/2010/01/large-or-asynchronous-file-uploads-in-asp-net-mvc.html। मैंने इसे संदर्भ के लिए बुकमार्क किया था।"Firefox 3.5 और बाद" खंड में https://developer.mozilla.org/en/using_xmlhttprequest का संदर्भ लें:

0

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

0

हाल ही में, मैंने एक jQuery प्लग-इन लिखा था जो आपको ऐसा कुछ करने की अनुमति देगा। मैं कोड पोस्ट नहीं कर सकता, लेकिन मैं वर्णन कर सकता हूं कि यह कैसे काम करता है। अगर यह समझ में नहीं आता है, तो मुझे बताएं, क्योंकि यह थोड़ी देर हो गया है।

अपलोड फॉर्म तत्वों का एक सेट था। जब एक फ़ाइल का चयन किया गया था, तो यह एक छिपे हुए आईफ्रेम पर पोस्ट करेगा, सामग्री (बेस 64 के माध्यम से) जिसमें से एक छिपे हुए फॉर्म फ़ील्ड में कॉपी किया गया था। फिर, जब अंतिम फॉर्म सबमिट किया जाता है, तो छिपे हुए फॉर्म फ़ील्ड की सामग्री फ़ाइल जानकारी प्राप्त करने के लिए उपयोग की जाती है।

एरिक

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