跳转至

获取表单附件上传文件数量

获取表单附件上传文件数量示例代码:

var jsonText = getItemValueAsString("附件");
var number = 0;
if (jsonText!=null && jsonText.trim().length>0) {
    var html = "";
    var jsonArray = new Packages.org.json.JSONArray(jsonText);
    number = jsonArray.length();
}
number;

脚本说明

该脚本用于获取表单附件字段中上传的文件数量。附件字段的值是JSON格式的字符串,通过解析JSON数组来获取文件数量。

脚本功能

  1. 获取附件字段值: 使用 getItemValueAsString("附件") 获取附件字段的JSON字符串
  2. 判断是否为空: 检查附件字段是否有值
  3. 解析JSON数组: 将JSON字符串解析为JSONArray对象
  4. 获取数量: 通过 jsonArray.length() 获取文件数量

使用场景

  • 统计表单附件数量
  • 根据附件数量执行不同逻辑
  • 附件数量验证
  • 附件数量显示

扩展示例

示例1:在值脚本中使用

(function(){
    var jsonText = getItemValueAsString("附件");
    var number = 0;
    if (jsonText != null && jsonText.trim().length > 0) {
        var jsonArray = new Packages.org.json.JSONArray(jsonText);
        number = jsonArray.length();
    }
    return number;
})();

示例2:获取附件详细信息

(function(){
    var jsonText = getItemValueAsString("附件");
    var number = 0;
    var fileList = [];

    if (jsonText != null && jsonText.trim().length > 0) {
        var jsonArray = new Packages.org.json.JSONArray(jsonText);
        number = jsonArray.length();

        // 获取每个文件的详细信息
        for(var i = 0; i < number; i++){
            var fileObj = jsonArray.getJSONObject(i);
            var fileName = fileObj.getString("name");
            var fileSize = fileObj.getLong("size");
            fileList.push(fileName);
        }
    }

    return "附件数量:" + number + ",文件列表:" + fileList.join(",");
})();

示例3:根据附件数量验证

(function(){
    var jsonText = getItemValueAsString("附件");
    var number = 0;

    if (jsonText != null && jsonText.trim().length > 0) {
        var jsonArray = new Packages.org.json.JSONArray(jsonText);
        number = jsonArray.length();
    }

    // 验证附件数量
    if(number == 0){
        return "请至少上传一个附件!";
    }else if(number > 5){
        return "附件数量不能超过5个!";
    }else{
        return "附件数量:" + number;
    }
})();

示例4:在保存前脚本中使用

(function(){
    var doc = getCurrentDocument();
    var jsonText = doc.getItemValueAsString("附件");
    var number = 0;

    if (jsonText != null && jsonText.trim().length > 0) {
        var jsonArray = new Packages.org.json.JSONArray(jsonText);
        number = jsonArray.length();
    }

    // 将附件数量保存到字段
    doc.findItem("附件数量").setValue(number);

    // 验证附件数量
    if(number == 0){
        return "请上传附件!";
    }
})();

示例5:获取附件总大小

(function(){
    var jsonText = getItemValueAsString("附件");
    var number = 0;
    var totalSize = 0;

    if (jsonText != null && jsonText.trim().length > 0) {
        var jsonArray = new Packages.org.json.JSONArray(jsonText);
        number = jsonArray.length();

        // 计算总大小
        for(var i = 0; i < number; i++){
            var fileObj = jsonArray.getJSONObject(i);
            var fileSize = fileObj.optLong("size", 0);
            totalSize += fileSize;
        }
    }

    // 转换为MB
    var totalSizeMB = (totalSize / 1024 / 1024).toFixed(2);
    return "附件数量:" + number + ",总大小:" + totalSizeMB + " MB";
})();

关键函数说明

  • getItemValueAsString("附件"): 获取附件字段的JSON字符串值
  • new Packages.org.json.JSONArray(jsonText): 将JSON字符串解析为JSONArray对象
  • jsonArray.length(): 获取JSON数组的长度(文件数量)
  • jsonArray.getJSONObject(i): 获取指定索引的JSON对象(文件信息)
  • fileObj.getString("name"): 获取文件名
  • fileObj.getLong("size"): 获取文件大小

附件JSON格式说明

附件字段的值通常是JSON数组格式,例如:

[
    {
        "id": "文件ID",
        "name": "文件名.pdf",
        "size": 1024000,
        "type": "application/pdf",
        "url": "文件URL"
    },
    {
        "id": "文件ID2",
        "name": "文件名2.doc",
        "size": 2048000,
        "type": "application/msword",
        "url": "文件URL2"
    }
]

注意事项

  • 附件字段名称需要与实际表单中的字段名称匹配
  • JSON字符串可能为空,需要先判断再解析
  • 使用 Packages.org.json.JSONArray 需要确保系统支持该JSON库
  • 文件信息可能包含不同的字段,根据实际情况获取
  • 文件大小单位通常是字节(bytes)
  • 在值脚本中使用时,最后需要返回数值或字符串
  • 附件数量为0时,JSON字符串可能为空或null

常见应用

  1. 附件数量显示: 在表单中显示当前附件数量
  2. 附件验证: 验证是否上传了附件或附件数量是否符合要求
  3. 附件统计: 统计附件数量和总大小
  4. 附件列表: 获取附件列表并显示
  5. 附件处理: 根据附件数量执行不同的业务逻辑

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1kdb8vbiqk1
文档更新时间: 2023-09-20 08:15 作者:john