如何使用jquery或javascript获取文件的扩展名?

时间:2010-11-12 13:06:40

标签: javascript jquery

我想检查上传文件的类型。如果名称为example.txt,我只想获得.txt部分。我如何使用Jquery或javascript实现它。

任何建议或链接都​​会表示赞赏!!!

7 个答案:

答案 0 :(得分:47)

一个简单的解决方案是.split().pop()来获取数组中的最后一个字符串,如下所示:

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

如果没有"txt",这只会.,只需要附加即可。这也适用于:My.File.name.has.an extension.txt。如果没有有扩展名,它将返回文件名,因此您可能需要检查这个...或者采用完全不同的方向并通过正则表达式验证一组或已知的扩展名

答案 1 :(得分:9)

使用lastIndexOf()substr()

function getFileExtension(name)
{
    int found = name.lastIndexOf('.') + 1;
    return (found > 0 ? name.substr(found) : "");
}

请注意,如果文件名不包含任何句点字符(即没有扩展名),则此实现返回空字符串。在这种情况下,基于split()的实现有时会返回完整的文件名。

答案 2 :(得分:8)

如果您需要验证多个扩展程序:

var filename = "picture.jpg";
var valid_extensions = /(\.jpg|\.jpeg|\.gif)$/i;   
if(valid_extensions.test(filename))
{ 
   alert('OK');
}
else
{
   alert('Invalid File');
}

如果要检查扩展名(例如,在上传文件之前),则无需解析字符串。

答案 3 :(得分:2)

var text = 'example.txt',
    ext  = text.split('.')[1];

答案 4 :(得分:1)

使用分割整个文件名。作为分隔符。分割将所选项存储在数组中。取最后一个元素。

答案 5 :(得分:1)

    if((document.form1.upload.value.lastIndexOf(".jpg")==-1) {
   alert("Please upload only .jpg extention file");
   return false;
}

lastIndexOf将返回指定搜索参数最后一次出现的索引。如果没有找到,-1将返回

答案 6 :(得分:0)

Frédéric的答案对我来说效果很好,但是,该功能会在Chrome控制台中出现“错误标识符”错误。 “int”是问题,这种修改有效。

function getFileExtension(name){
  var found = name.lastIndexOf('.') + 1;
  return (parseInt(found) > 0 ? name.substr(found) : "");
}