JVX框架中使用ProjXUtil.uploadFile上传文件时如何验证文件类型与大小?
验证文件类型与大小的解决方案
由于ProjXUtil.uploadFile本身不支持传入类型/大小校验参数,只能在调用该函数之前手动完成前置校验,具体实现步骤如下:
1. 获取待上传的文件对象
先从文件选择入口(比如前端的<input type="file">控件、后端的请求文件流)中拿到目标文件的原始对象,示例代码(前端场景):
// 假设文件选择器的DOM ID为fileInput const fileInput = document.getElementById('fileInput'); const selectedFile = fileInput.files[0];
2. 文件类型校验
根据业务需求定义允许的文件范围,可通过MIME类型或文件后缀名两种方式校验:
// 方式1:基于MIME类型校验(示例允许图片和PDF) const allowedMimeTypes = ['image/jpeg', 'image/png', 'application/pdf']; const isTypeValid = allowedMimeTypes.includes(selectedFile.type); // 方式2:基于文件后缀名校验(兼容MIME识别不准的情况) const allowedExtensions = ['.jpg', '.jpeg', '.png', '.pdf']; const fileExtension = selectedFile.name.slice(selectedFile.name.lastIndexOf('.')).toLowerCase(); const isTypeValid = allowedExtensions.includes(fileExtension);
3. 文件大小校验
设置最大允许文件大小(比如5MB,换算为字节是5*1024*1024),通过文件的size属性判断:
const maxAllowedSize = 5 * 1024 * 1024; // 5MB const isSizeValid = selectedFile.size <= maxAllowedSize;
4. 校验通过后执行上传
只有当类型和大小都符合要求时,才调用上传函数:
if (isTypeValid && isSizeValid) { // 执行原上传逻辑 ProjXUtil.uploadFile(this, new Var(mdbDokumente, "FILENAME"), new Var(mdbDokumente, "FILE_")); } else { // 校验失败时给出提示 alert('文件类型或大小不符合要求,请重新选择'); }
补充说明
如果是后端场景,核心逻辑依然是先读取文件元数据→完成校验→再调用上传函数,仅获取文件信息的方式需要根据后端框架调整(比如从请求体中读取文件流的大小、文件名等)。
内容的提问来源于stack exchange,提问作者Stefan Wurm
相关产品推荐
相关产品推荐

