2012-10-17 9 views
42

तो मेरे पास "file" प्रकार के साथ मूल रूप से इनपुट इनपुट है, हालांकि मैं चाहता हूं कि उपयोगकर्ता फ़ोल्डर स्थान का चयन करने में सक्षम हो, न कि फ़ाइल।HTML इनपुट प्रकार "फ़ाइल" या किसी अन्य तरीके से फ़ोल्डर निर्देशिका कैसे प्राप्त करें?

मैं इस इनपुट को फ़ोल्डर का चयन करने के लिए कैसे प्राप्त कर सकता हूं, फाइल नहीं, या ऐसा करने का कोई और तरीका है?

+0

का उपयोग कर आप क्यों फ़ोल्डर स्थान को बचाने के लिए चुना जाएगा एक फ़ाइल के लिए ब्राउज़ एकाधिक फ़ाइलों का चयन कर सकते हैं? – hjpotter92

+1

क्या आप चयनित फ़ोल्डर में सभी फाइलें अपलोड करने का प्रयास कर रहे हैं? –

+1

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

उत्तर

1

आप फ्लैश/सिल्वरलाइट/एक्टिवएक्स नियंत्रण का उपयोग करने की संभावना रखते हैं। <input type="file" /> नियंत्रण उस पर संभाल नहीं करता है।

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

ध्यान रखें कि वेबपृष्ठ सर्वर के साथ संवाद करने के लिए डिज़ाइन किए गए हैं। रिमोट सर्वर पर स्थानीय निर्देशिका प्रदान करने के बारे में कुछ भी नहीं है "ठेठ" (एक सर्वर इसका उपयोग नहीं कर सकता है, इसलिए इसके लिए क्यों पूछें?); हालांकि फाइलें चुनिंदा जानकारी पास करने का साधन हैं।

45

रूप में अच्छी तरह इस पृष्ठ पर गलती से, और फिर पता चला यह सिर्फ जावास्क्रिप्ट (ActiveX या फ्लैश की तरह कोई प्लगइन्स) के साथ संभव है, लेकिन सिर्फ क्रोम में:

https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3

मूल रूप से

, वे के लिए समर्थन जोड़ा फ़ाइल इनपुट तत्व "webkitdirectory" पर एक नई विशेषता। आप इसे इस तरह का उपयोग कर सकते हैं:

<input type="file" id="ctrl" webkitdirectory directory multiple/>

यह आप निर्देशिका का चयन करने के लिए अनुमति देता है। एकाधिक विशेषता ब्राउज़र के लिए एक अच्छी फॉलबैक है जो एकाधिक फ़ाइल चयन का समर्थन करती है लेकिन निर्देशिका चयन नहीं।

जब आप कोई निर्देशिका चुनते हैं तो फ़ाइलें नियंत्रण के लिए डोम ऑब्जेक्ट (document.getElementById ('ctrl')) के माध्यम से उपलब्ध होती हैं, जैसे कि वे एकाधिक गुण के साथ हैं। ब्राउज़र चयनित फ़ाइलों में सभी फ़ाइलों को उस सूची में दोबारा जोड़ता है।

आप पहले से ही निर्देशिका विशेषता के रूप में अच्छी तरह से मामले में यह कुछ बिंदु पर मानकीकृत हो जाता है जोड़ सकते हैं (किसी भी जानकारी है कि के बारे में नहीं पा सके)

+3

ध्यान दें कि यह, हालांकि, व्यक्तिगत फ़ाइलों को चुनने की संभावना को अवरुद्ध करता है। अद्यतित, 'मानक' तरीकों (गैर-फ्लैश, गैर-सिल्वरलाइट इत्यादि) का उपयोग करके दोनों फ़ाइलों और निर्देशिकाओं का चयन करने का एकमात्र तरीका।) दो अलग इनपुट तत्व प्रदान करके है। –

+0

@ निकोलयमेलिकोव या ड्रैग और ड्रॉप – antonj

+0

का उपयोग करके मैं इसे फाइलों और फ़ोल्डरों सहित कई चीजों को कैसे स्वीकार कर सकता हूं? – Casper

-1

Eventhough यह एक पुराने सवाल है, इस किसी की मदद कर सकते हैं।

हम जबकि "एकाधिक"

<input type="file" name="datafile" size="40" multiple> 
संबंधित मुद्दे