2010-06-15 58 views
27

我想知道是否有可能让jQuery根据返回的字符串找到文件扩展名?jQuery找到文件扩展名(从字符串)

一个文件名(字符串)将被传递给一个函数(openFile),我希望该函数根据传递的文件做不同的事情,它可能是图像文件或PDF文件。

function openFile(file) { 

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

    //if .zip/.rar do something else 

    //if .pdf do something else 

}; 

我一直在找东西,会找到文件的扩展名,但我似乎无法找到任何东西。

+2

谢谢大家为你的帮助! :) – SoulieBaby 2010-06-15 03:47:10

回答

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很好的回答 – 2010-06-15 03:41:22

+0

这种方式在文件没有扩展名时不起作用。像文件夹/文件没有扩展名 – 2013-11-16 09:38:12

+0

所以这比'.split('。')。pop();'更快吗? – cantsay 2014-09-07 02:53:29

1

由于扩展名将始终为完整/部分文件名中的一段时间后的字符串,因此只需使用js中的内置分割函数并测试所需的扩展名即可。如果分割只返回一个/不分片,则不包含分机。

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 2010-06-15 03:42:59

+0

确实很高档。 – 2013-03-26 14:59:16

+0

小明码:) upvoted – 2016-05-17 07:49:38

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()'。可能很重要。 – user113716 2010-06-15 03:48:40

1
var fileName = 'file.txt'; 

// Getting Extension 

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

// OR 

var ext = fileName.split('.').pop();