前端实现上传文件格式过滤:jQuery与原生JS两种方案
作者:小括号时间:2026-10-23 20:51:40浏览:413
本文详细介绍如何在Web前端通过JavaScript或jQuery实现上传文件的格式过滤。通过获取文件路径、提取扩展名并与允许的格式(如xls、xlsx)进行比对,在提交前拦截非法文件。文章提供了基于jQuery和原生DOM操作的两套完整代码示例,涵盖HTML表单结构、错误提示逻辑及文件类型判断核心算法,帮助开发者快速实现客户端的文件类型校验功能。
基于jQuery的文件上传格式过滤实现
以下是使用jQuery实现前端文件上传格式过滤的代码示例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style><!--
.errorInfo{
color:red;
padding-left:5px;
}
--></style><style bogus="1"> .errorInfo{
color:red;
padding-left:5px;
}</style>
<script type="text/javascript"><!--
$(function(){
"#DataReport").click(function(){
//上传文件不能为空,格式必须为xsl和xlsx
var flag=true;
var fileObject=$("input[name='file']");
var filepath=$("input[name='file']").val();
if(filepath==undefined||$.trim(filepath)==""){
fileObject.focus().next().text("请选择上传文件!");
flag=false;
}else{
var fileArr=filepath.split("\\");
var fileTArr=fileArr[fileArr.length-1].toLowerCase().split(".");
var filetype=fileTArr[fileTArr.length-1];
if(filetype!="xls"&&filetype!="xlsx"){
fileObject.focus().next().text("上传文件必须为Excel文件!");
flag=false;
}else{
fileObject.next().text("");
}
}
//进行其他相关校验
if(flag){
alert("文件上传成功");
}
});
});
// --></script>
</head>
<body>
<form action="#" method="POST" enctype="multipart/form-data">
<div><input type="file" name="file"><span class='errorInfo'></span></div>
<div><input type="button" value="上传" id="DataReport"></div>
</form>
</body>
</html>注:在head中加入jquery的引入语句,博客还是会过滤掉引入的js文件。
基于原生JavaScript的文件上传格式过滤实现
若不使用jQuery库,可通过原生JavaScript实现相同的文件上传格式过滤功能,具体代码如下:
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style><!--
.errorInfo{
color:red;
padding-left:5px;
}
--></style><style bogus="1"> .errorInfo{
color:red;
padding-left:5px;
}</style>
<script type="text/javascript"><!--
function validateFile(){
var flag=true;
var fileObject=document.getElementById("file");
var errorObject=document.getElementById("error");
var filepath=fileObject.value;
if(filepath==undefined||filepath==""){
fileObject.focus();
errorObject.innerText="请选择上传文件!";
flag=false;
}else{
var fileArr=filepath.split("\\");
var fileTArr=fileArr[fileArr.length-1].toLowerCase().split(".");
var filetype=fileTArr[fileTArr.length-1];
if(filetype!="xls"&&filetype!="xlsx"){
fileObject.focus();
errorObject.innerText="上传文件必须为Excel文件!";
flag=false;
}else{
errorObject.innerText="";
}
}
//进行其他相关校验
if(flag){
alert("文件上传成功");
}
}
// --></script>
</head>
<body>
<form action="#" method="POST" enctype="multipart/form-data">
<div><input type="file" id="file"><span id="error" class='errorInfo'></span></div>
<div><input type="button" value="上传" id="DataReport" onclick="validateFile()"></div>
</form>
</body>
</html>作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
