二开案例.表单插件.文件上传限制个数

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

二开案例.表单插件.文件上传限制个数

【场景】文件上传时限制个数,仅适用于文件上传控件,针对其他附件文件服务器,附件数据库等既定的由平台实现的逻辑不能干预 【案例】上传多个文件时,服务端能够判断个数给客户提示(最终还是需要客户手动删除多余文件) [文件上传逻辑](https://wenku.my7c.com/article/119433960857351680?productLineId=1&isKnowledge=2) 增加判断上传个数 ```csharp using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.JSON; using Kingdee.BOS.Util; using System; using System.Collections.Generic; namespace DynamicFormPlugIn.Attachment { [Kingdee.BOS.Util.HotUpdate] public class LimitFileCountPlugIn : AbstractDynamicFormPlugIn { const string FileUploadServicesDir = "FileUploadServices/UploadFiles"; const string FieldKey = "F_BHR_FileUpdate"; public override void CustomEvents(CustomEventsArgs e) { base.CustomEvents(e); if (!string.Equals(FieldKey, e.Key, StringComparison.OrdinalIgnoreCase)) return; // 设置上传控件参数 this.View.GetControl(FieldKey).SetCustomPropertyValue("NeedCallback", true); this.View.GetControl(FieldKey).SetCustomPropertyValue("IsRequesting", false); if (!string.Equals("FileChanged", e.EventName, StringComparison.OrdinalIgnoreCase)) return; // 文件上传完毕 var postData = KDObjectConverter.DeserializeObject<JSONObject>(e.EventArgs); if (postData == null) return; var uploadInfo = new JSONArray(postData["NewValue"].ToString()); if (uploadInfo.Count > 0) { if (uploadInfo.Count > 3) { //实际上文件已经上传到应用服务器对应目录,但是只是不做后续处理,如跟单据关联之类 this.View.ShowErrMessage("上传文件大于3个,不支持处理后续逻辑"); } // 取上传的文件名 var fileInfo = uploadInfo[0] as Dictionary<string, object>; if (fileInfo != null) { var fileName = fileInfo["ServerFileName"].ToString(); var physicalPath = PathUtils.GetPhysicalPath(FileUploadServicesDir, fileName); this.View.ShowMessage("文件上传成功,存放路径:" + physicalPath); } } } } } ``` 【效果】如果上传多个,可以给操作员警告,后续的业务逻辑就不执行即可;满足条件时才做后续的逻辑 ![Image_20221214104719.webp](/download/0100f8b237f0eb1d4561ab9934352bee33a4.webp) 【缺陷】最终是在服务端判断,文件已上传到服务端,占用了上传的流量,前端无法干预实现此功能

二开案例.表单插件.文件上传限制个数

【场景】文件上传时限制个数,仅适用于文件上传控件,针对其他附件文件服务器,附件数据库等既定的由平台实现的逻辑不能干预【案例】上传多...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息