如何使用jQuery或JavaScript获取文件的扩展名?
我想检查上传文件的类型。如果名称像example.txt
,我只想得到.txt
部分。我怎样才能实现它使用JQuery或JavaScript。如何使用jQuery或JavaScript获取文件的扩展名?
任何建议或链接将欣赏!
一个简单的解决方案是.split()
和.pop()
拿到最后一个字符串数组中,像这样:
var ext = fileName.split('.').pop();
这将让您刚才"txt"
没有.
,只是追加如果需要的话。这也适用于说:My.File.name.has.an extension.txt
以及。如果它没有有扩展名,它会返回文件名,所以你可能想要检查这个...或者去一个完全不同的方向,并通过正则表达式来对照一组或已知的扩展来验证。
这就是我要找的感谢!!! – 2017-06-07 07:45:47
当具有查询字符串参数时,脚本将无法正常工作,例如'/example/image.jpg?a = b&b = 2',为了处理它,我增加了一个分割'file.split(“?”)[0] .split('。')。pop()'(注意:很多时候系统使用查询字符串来防止在需要时缓存) – 2017-11-20 10:28:53
var text = 'example.txt',
ext = text.split('.')[1];
您可能希望至少使该语法有效。 *编辑*:你走了。 – 2010-11-12 13:10:37
哈哈对不起,快速键盘上 – tbleckert 2010-11-12 13:12:51
用整个文件名拆分。作为分隔符。分割将分割的项目存储在数组中。获取数组的最后一个元素。
function getFileExtension(name)
{
int found = name.lastIndexOf('.') + 1;
return (found > 0 ? name.substr(found) : "");
}
注意,此实现返回一个空字符串,如果文件名不包含任何句点字符(即没有扩展名)。在这种情况下,基于split()的实现有时会返回完整的文件名。
if((document.form1.upload.value.lastIndexOf(".jpg")==-1) {
alert("Please upload only .jpg extention file");
return false;
}
lastIndexOf将返回最后一次出现的指定搜索参数的索引。如果没有找到,-1将返回
如果您需要验证多个扩展名:
var filename = "picture.jpg";
var valid_extensions = /(\.jpg|\.jpeg|\.gif)$/i;
if(valid_extensions.test(filename))
{
alert('OK');
}
else
{
alert('Invalid File');
}
这样就不再需要,如果你想查询的扩展名,例如,上传文件之前解析字符串。
'foojpg'会匹配。您的正则表达式中的时间段需要被转义。 – 2010-11-12 14:53:36
-1:解决评论并修复答案。 – ANeves 2011-12-14 19:51:21
Frédéric的回答对我很好,但是,该功能在Chrome控制台中出现“意外标识符”错误。 “int”是问题,并且此修改工作。
function getFileExtension(name){
var found = name.lastIndexOf('.') + 1;
return (parseInt(found) > 0 ? name.substr(found) : "");
}
文件的* name *可能会告诉你**没有任何**关于它实际包含的内容。 – Pointy 2010-11-12 13:10:54
看看这个http://stackoverflow.com/questions/1818310/regular-expression-to-remove-a-files-extension – ArK 2010-11-12 13:13:05
@Pointy:它是什么?我无法理解。你在说安全威胁吗? – 2010-11-12 15:51:01