文件上传时检测文件名是否包含单引号(')或双引号(")的JavaScript代码示例:
html
<input type="file" id="fileInput" onchange="checkFileName(this)">
<script>
function checkFileName(input) {
// 获取文件名(包含文件扩展名)
const fileName = input.files[0]?.name;
// 使用正则表达式检查特殊字符
if (fileName && /['"]/.test(fileName)) {
alert("文件名包含非法字符(单引号或双引号),请修改后重新上传!");
// 清空已选文件
input.value = '';
// 阻止表单提交(如果有表单)
return false;
}
return true;
}
</script>
代码说明:
使用正则表达式 /'"/ 检测文件名中的单引号和双引号
发现非法字符时:
弹出警告提示
清空已选择的文件
返回 false 阻止可能存在的表单提交
通过可选链操作符 ?. 安全访问文件对象
实际使用中建议:
在后端也添加相同的验证(前端验证容易被绕过)
可以扩展checkFileName函数来处理更多特殊字符
可以根据需求将alert改为更美观的弹窗提示
如果要支持多文件上传,需要遍历所有选择的文件
扩展验证示例(支持多文件):
javascript
function checkFileName(input) {
const files = input.files;
for (const file of files) {
if (/'"/.test(file.name)) {
alert(`文件 ${file.name} 包含非法字符!`);
input.value = '';
return false;
}
}
return true;
}
