如何使用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) : ""); }