获取表单附件上传文件数量¶
获取表单附件上传文件数量示例代码:
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数组来获取文件数量。
脚本功能¶
- 获取附件字段值: 使用
getItemValueAsString("附件")获取附件字段的JSON字符串 - 判断是否为空: 检查附件字段是否有值
- 解析JSON数组: 将JSON字符串解析为JSONArray对象
- 获取数量: 通过
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
常见应用¶
- 附件数量显示: 在表单中显示当前附件数量
- 附件验证: 验证是否上传了附件或附件数量是否符合要求
- 附件统计: 统计附件数量和总大小
- 附件列表: 获取附件列表并显示
- 附件处理: 根据附件数量执行不同的业务逻辑
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1kdb8vbiqk1
文档更新时间: 2023-09-20 08:15 作者:john