2010-06-15 22 views
27

मुझे आश्चर्य हुआ कि क्या jQuery के लिए एक लौटा स्ट्रिंग के आधार पर फ़ाइल एक्सटेंशन ढूंढना संभव था?jQuery फ़ाइल एक्सटेंशन (स्ट्रिंग से)

एक फ़ाइल नाम (स्ट्रिंग) एक फ़ंक्शन (ओपनफाइल) को पास कर दिया जाएगा और मैं चाहता हूं कि फ़ंक्शन किस फ़ाइल के माध्यम से पारित हो, इस पर आधारित विभिन्न कार्य करने के लिए फ़ंक्शन, यह छवि फ़ाइलों या पीडीएफ फाइलें हो सकती है।

function openFile(file) { 

    //if .jpg/.gif/.png do something 

    //if .zip/.rar do something else 

    //if .pdf do something else 

}; 

मैं कुछ ऐसा ढूंढ रहा हूं जो फ़ाइल का विस्तार पायेगा लेकिन मुझे कुछ भी नहीं मिल रहा है।

+2

धन्यवाद आपकी मदद के लिए हर कोई! :) – SoulieBaby

उत्तर

69

कैसे कुछ इस तरह के बारे में।

टेस्ट लाइव उदाहरण:http://jsfiddle.net/6hBZU/1/

यह मानता है कि स्ट्रिंग हमेशा विस्तार के साथ खत्म हो जाएगा:

function openFile(file) { 
    var extension = file.substr((file.lastIndexOf('.') +1)); 
    switch(extension) { 
     case 'jpg': 
     case 'png': 
     case 'gif': 
      alert('was jpg png gif'); // There's was a typo in the example where 
     break;       // the alert ended with pdf instead of gif. 
     case 'zip': 
     case 'rar': 
      alert('was zip rar'); 
     break; 
     case 'pdf': 
      alert('was pdf'); 
     break; 
     default: 
      alert('who knows'); 
    } 
}; 

openFile("somestring.png"); 

संपादित: मैं गलती से openFile("somestring.png"); में स्ट्रिंग के भाग को नष्ट कर दिया। सही किया। हालांकि, लाइव उदाहरण में था।

+3

हाहा, मैंने लगभग एक टिप्पणी छोड़ दी, तो मैंने हम्म सोचा ... शायद मैं कुछ समझ नहीं रहा हूं। +1 महान उत्तर –

+0

इस तरह से काम नहीं करेगा जब फ़ाइल में एक्सटेंशन नहीं है। फ़ोल्डर/फ़ाइल-बिना-विस्तार –

+0

की तरह यह '.plit ('।') से अधिक तेज़ है। पॉप(); 'जो नीचे पोस्ट किया गया है? – cantsay

1

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

8

आप substring का एक संयोजन और lastIndexOf

नमूना उपयोग कर सकते हैं

var fileName = "test.jpg"; 
var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1); 
1

इस प्रयास करें:

var extension = fileString.substring(fileString.lastIndexOf('.') + 1); 
63

फाइल एक्सटेंशन पाने के लिए, मैं यह कर जाएगा:

var ext = file.split('.').pop(); 
+4

+1 - एक्सटेंशन प्राप्त करने का बहुत अच्छा तरीका। इच्छा है कि मैं इसके बारे में सोचा था! – user113716

+0

वास्तव में बहुत upscale, वास्तव में। –

+0

छोटे स्पष्ट कोड :) upvoted –

11

फिर भी एक और तरीका यह लिख अप करने के लिए:

function getExtension(filename) { 
    return filename.split('.').pop().toLowerCase(); 
} 

function openFile(file) { 
    switch(getExtension(file)) { 
     //if .jpg/.gif/.png do something 
     case 'jpg': case 'gif': case 'png': 
      /* handle */ 
      break; 
     //if .zip/.rar do something else 
     case 'zip': case 'rar': 
      /* handle */ 
      break; 

     //if .pdf do something else 
     case 'pdf': 
      /* handle */ 
      break; 
    } 
} 
+0

+1 '.toLowerCase() 'जोड़ने के लिए +1। महत्वपूर्ण हो सकता है। – user113716

1
var fileName = 'file.txt'; 

// Getting Extension 

var ext = fileName.split('.')[1]; 

// OR 

var ext = fileName.split('.').pop(); 
संबंधित मुद्दे