2010-05-11 13 views
43

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

+2

कम से कम क्रोम में एचटीएमएल 5 के साथ यह संभव है: http: // stackoverflow।कॉम/प्रश्न/2471876 9/एचटीएमएल 5-जावास्क्रिप्ट-कैसे-टू-द-चयनित-फ़ोल्डर-नाम – mtyson

उत्तर

21

सुरक्षा कारणों से शुद्ध HTML/जावास्क्रिप्ट में नहीं किया जा सकता है।

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

आप जावा या फ्लैश का उपयोग करके कुछ जोड़ सकते हैं (उदाहरण के लिए SWFUpload आधार के आधार पर), लेकिन यह बहुत काम है और अतिरिक्त संगतता मुद्दों को लाता है।

एक और विचार iframe को उपयोगकर्ता का C: ड्राइव (या जो कुछ भी) दिखा रहा है, लेकिन आज भी यह संभव है (सुरक्षा कारणों से अवरुद्ध किया जा सकता है, लंबे समय तक प्रयास नहीं किया जा सकता है) यह आपके वेब के लिए असंभव होगा आईफ्रेम के साथ संवाद करने के लिए साइट (सुरक्षा कारणों से फिर से)।

आपको इसके लिए क्या चाहिए?

+0

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

+2

@enfix आप किसी जेएसपी सर्वर से फ़ाइल को उपयोगकर्ता के स्थानीय कंप्यूटर पर एक निश्चित पथ में सहेजने के लिए कैसे जा रहे हैं? मुझे समझ में नहीं आता क्या आप स्पष्ट करने के लिए अपना प्रश्न संपादित कर सकते हैं? –

+0

मुझे उस पथ को प्राप्त करने की आवश्यकता है जहां उपयोगकर्ता फ़ाइलों को सहेजना चाहता है, लेकिन फ़ाइलों को जेएसपी पृष्ठ के अंदर जावा फ़ंक्शन कॉलेंड के साथ सहेजा जाता है। इस फ़ंक्शन को फ़ाइलों को सहेजने के लिए पथ की आवश्यकता है। बस इतना ही। मैं एक से अधिक फाइलों को सहेजता हूं, मुझे इस जावा फ़ंक्शन के साथ फ़ोल्डर और अन्य चीज़ों को बनाने की आवश्यकता है। – enfix

2

स्क्रिप्टिंग अनिवार्य है।

यह सुरक्षा जोखिम के कारण प्रदान नहीं किया गया है। <input type='file' /> निकटतम है, लेकिन आप जो खोज रहे हैं वह नहीं।

चेकआउट this example जो आप चाहते हैं कि प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग करता है।

यदि ओएस विंडोज है, तो आप फ़ोल्डर के लिए ब्राउज़ करने के लिए कोर नियंत्रण फ़ाइलों तक पहुंचने के लिए VB scripts का उपयोग कर सकते हैं।

46

इस प्रयास करें, मुझे लगता है कि यह आप के लिए काम करेंगे:

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

आप https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3, पर इस बात का डेमो पा सकते हैं और आप अधिक जानकारी की आवश्यकता है, तो आप इसे here पा सकते हैं।

+0

मुझे लगता है कि आपका सुझाव फ़ोल्डर को अपलोड करने के लिए काम करता है, अपना रास्ता नहीं प्राप्त करता है। –

+2

यह फ़ायरफ़ॉक्स में काम करता है लेकिन क्रोम में नहीं। प्रलेखन के लिए –

+0

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory। इसे 'गैर-मानक' कहा जाता है। और यह प्रभावी रूप से फाइल नाम को उजागर करने वाली फ़ाइलों को दोबारा अपलोड करता है (?)। यह ज्यादातर मामलों के लिए करेगा – Blauhirn

1

यदि आप सर्वर और उपयोगकर्ता हैं (उदाहरण के लिए यदि आप ब्राउज़र के माध्यम से काम करते हैं और आपको फ़ोल्डर चुनने की आवश्यकता है) तो सर्वर से JFileChooser पर कॉल करने का प्रयास करें, जब ब्राउज़र में कुछ बटन क्लिक किया जाता है

JFileChooser chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File(".")); 
chooser.setDialogTitle("select folder"); 
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
chooser.setAcceptAllFileFilterUsed(false); 

यह कतरना कोड है here

0

से मैं एक काम के आसपास था। मेरे पास मूल्य रखने के लिए एक छुपा टेक्स्टबॉक्स था। फिर, form_onsubmit पर, मैंने पथ मान की प्रतिलिपि बनाई, फ़ाइल नाम को छिपे हुए फ़ोल्डर में कम किया। फिर, फ़ाइल इनपुट बॉक्स को "" पर सेट करें। इस तरह, कोई फ़ाइल अपलोड नहीं की गई है। मुझे फ़ाइल अपलोड की घटना को याद नहीं है। शायद बदले में। इसे बीते एक अर्सा हो गया है। यदि कोई मान है, तो मैं फ़ाइल नाम का विश्लेषण करता हूं और फ़ोल्डर को वापस बॉक्स में डाल देता हूं। बेशक, आप वैध फ़ाइल के रूप में फ़ाइल को मान्य करेंगे। यह आपको क्लाइंट वर्कस्टेशन फ़ोल्डर देगा।
हालांकि, यदि आप सर्वर पथ को प्रतिबिंबित करना चाहते हैं, तो इसके लिए एक अलग कोडिंग दृष्टिकोण की आवश्यकता होती है।

+0

उपयोगकर्ता को किसी भी फ़ाइल को लेने के लिए प्रशिक्षित किया जाना होगा। यह धोखाधड़ी है। लेकिन, एक चुटकी में काम करता है। FileUpload नियंत्रण में जोड़ें और onchange = "parseFilePath()"। फ़ंक्शन parseFileUploadPath() { var upl = document.getElementById ("<% = this.FileUpload1.ClientID%>"); अगर (upl.value! = "") { var pos = upl.value.lastIndexOf ("\\") document.getElementById ("<% = this.TextBox1.ClientID%>")। Value = upl। value.substr (0, pos) } } – user8004777

+0

क्षमा करें, अधिक संपूर्ण HTML। – user8004777

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