You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

触发UploadCollection前验证文件名:拦截含逗号文件并终止上传

解决方案

方法一:文件添加阶段(change事件)提前拦截校验

这是最彻底的处理方式,文件刚被添加到UploadCollection时就完成校验,直接移除无效文件并终止所有上传流程,避免进入上传队列。

修改控制器中的onUploadChange方法:

onUploadChange: function(oEvent) {
    const aAddedFiles = oEvent.getParameter("files");
    const oUploadCollection = this.byId("UploadCollection");
    const aInvalidFiles = aAddedFiles.filter(file => file.name.includes(","));

    if (aInvalidFiles.length > 0) {
        // 弹出错误提示
        sap.m.MessageBox.error("检测到包含逗号的文件名,此类文件不允许上传,请重新选择。");
        
        // 移除所有无效文件
        aInvalidFiles.forEach(invalidFile => oUploadCollection.removeFile(invalidFile));
        
        // 终止所有正在进行的上传任务
        oUploadCollection.terminateUpload();
    }
}

方法二:单个文件上传前(beforeUploadStarts)拦截并终止全部上传

若需在上传前校验,可通过preventDefault()阻止当前文件上传,同时终止所有上传任务,但这种方式可能存在部分文件已启动上传的情况,不如方法一高效:

修改onBeforeUploadStarts方法:

onBeforeUploadStarts: function(oEvent) {
    const sFileName = oEvent.getParameter("fileName");
    const oUploadCollection = this.byId("UploadCollection");

    if (sFileName.includes(",")) {
        // 阻止当前文件上传
        oEvent.preventDefault();
        // 弹出错误提示
        sap.m.MessageBox.error(`文件 ${sFileName} 包含逗号,不允许上传,已终止全部上传任务。`);
        // 终止所有上传任务
        oUploadCollection.terminateUpload();
        return;
    }

    // 保留原有的请求头参数添加逻辑
    const slug = `${sFileName},${this.sRequestID},${this.oData.VendNum},${reqHeaderTms},RFU`; 
    const oCustomerHeaderSlug = new sap.m.UploadCollectionParameter({
        name: "slug",
        value: slug
    });
    oEvent.getParameters().addHeaderParameter(oCustomerHeaderSlug);
}

关键说明

  • beforeUploadStarts默认不会阻止上传,必须调用oEvent.preventDefault()才能终止当前文件的上传流程;但批量上传场景下,仅阻止单个文件无法终止全部上传,因此需要额外调用terminateUpload()方法终止所有任务。
  • 优先选择change事件校验:该事件在文件被添加到组件列表时触发,此时还未启动上传流程,能更高效地拦截无效文件,避免发起不必要的上传请求。

内容的提问来源于stack exchange,提问作者Fahmi Eshaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:45:27