JS检查提交的文件是否合规

学生毕业前需向图书馆提交论文。然而,当前系统存在两个主要问题:检查机制不完善且提示信息过少,加之许多学生不仔细阅读提示就直接操作,导致频繁向图书馆老师求助。

通过观察一位学生的操作流程,我确认了"忽略提示信息"是常见问题。在指导该学生顺利完成提交后,我们决定自行优化系统,而非依赖厂商支持。为此,我修改了一段JS代码,如果输入不合规,则强制要求用户必须阅读提示信息方可继续操作。

以下是使用DeepSeek编写的优化代码:

javascript 复制代码
function checkFileType() {
    var fileInput = document.getElementById("ppinSourceFile");
    var file = fileInput.files[0];
    if (!file) {
        return;
    }

    // 1. 校验文件名格式:学校代码_学号_姓名.pdf
    var fileName = file.name;
    var pattern = /^\d+_[A-Za-z0-9]+_[\u4e00-\u9fa5A-Za-z0-9]+\.pdf$/i;
    if (!pattern.test(fileName)) {
        alert("论文源名称格式不正确,请按照规范:\n学校代码_学号_姓名.pdf\n例如:10616_BT2018000_联图.pdf");
        fileInput.value = "";
        return;
    }

    // 2. 校验真实文件内容是否为 PDF(读取文件头)
    var reader = new FileReader();
    reader.onload = function(e) {
        var arr = new Uint8Array(e.target.result);
        // PDF 文件头固定为 %PDF (ASCII: 37 80 68 70)
        if (arr.length < 4 || arr[0] !== 37 || arr[1] !== 80 || arr[2] !== 68 || arr[3] !== 70) {
            alert("请选择真正的 PDF 文件,不能使用其他格式文件改名伪装。");
            fileInput.value = "";
            return;
        }
        // 验证通过,无需额外操作
    };
    reader.onerror = function() {
        alert("文件读取失败,请重新选择。");
        fileInput.value = "";
    };
    // 只读取前 4 个字节
    reader.readAsArrayBuffer(file.slice(0, 4));
}
相关推荐
Lazionr2 小时前
二叉搜索树:从树形结构到高效查找
开发语言·c++
此生决int2 小时前
深入理解C++系列(21)——异常
开发语言·c++
乌暮2 小时前
Java 抽象类与接口详解:半成品图纸 vs 能力合同
java·开发语言·后端·学习
乐观的Terry3 小时前
ShipDesk 完整使用教程:从新建项目到 SSH 自动发布
开发语言
IT_陈寒3 小时前
Redis大key删除引发的服务雪崩,这次我真记住了
前端·人工智能·后端
李少兄3 小时前
深入解析 JavaScript 中的 `document` 对象
javascript
IMPYLH3 小时前
HTML 的 <style> 元素
前端·html
paopaokaka_luck3 小时前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
刃神太酷啦3 小时前
前端入门第一课:HTML 基础语法 + 常用标签 + 实战全解
服务器·c语言·前端·javascript·css·c++·html
mldong3 小时前
给流程设计器加国际化,我没引 vue-i18n
前端·javascript·vue.js