上传文件检测文件名是否包含单双引号JS脚本

HB 网络电脑 2019-08-25

文件上传时检测文件名是否包含单引号(')或双引号(")的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;
}

PREV
免费泛域名证书,免费申请一年的AlphaSSL泛域名证书
NEXT
Armbian静态ip设置安装Armbian-config