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

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

任何建议或链接将是赞赏!

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

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

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

使用lastIndexOf()和substr() :

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

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

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

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

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

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

拆分整个文件名。 作为分隔符。分割将分割的项目存储在数组中。获取数组的最后一个元素。

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

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

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

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