上传按钮附件相关操作插件介绍

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

上传按钮附件相关操作插件介绍

# **1** **业务场景** - 使用上传按钮上传附件时,需要在上传前后增加业务逻辑,如对上传校验权限、对上传的文件校验文件内容、上传后记录附件信息等。 - 附件面板、图片列表移除已上传的附件后,需要在移除后增加业务逻辑,如记录移除的操作信息等。 # **2** **解决方案** 在表单插件中实现kd.bos.form.control.events.UploadListener接口,具体方法有: ```java /** * 上传前(开始往文件服务器上传文件) */ default void beforeUpload(BeforeUploadEvent evt){}; /** * 上传时(已上传文件服务器,未保存附件信息),可获取文件流 */ default void upload(UploadEvent evt){}; /** * 上传后(已上传文件服务器,已保存附件信息) */ default void afterUpload(UploadEvent evt){}; /** * 移除时(已删除文件,未删除附件信息) */ default void remove(UploadEvent evt){}; /** * 移除时(已删除文件,已删除附件信息) */ default void afterRemove(UploadEvent evt){}; ``` # 3 示例代码 ```java public class UploadListenerTestPlugin extends AbstractFormPlugin implements UploadListener { //注册控件监听 @Override public void registerListener(EventObject e) { //按钮 Button button = getControl("buttonap"); button.addUploadListener(this); //标签 Label label = getControl("labelap"); label.addUploadListener(this); //图片展示 Image imageControl = getControl("imageap4"); imageControl.addUploadListener(this); //图标 Vector vectorControl = getControl("vectorap"); vectorControl.addUploadListener(this); //图片列表 ImageList imageList = getControl("imagelistap"); imageList.addUploadListener(this); //附件面板 AttachmentPanel attachmentPanel = getControl("attachmentpanel"); attachmentPanel.addUploadListener(this); } @Override public void beforeUpload(BeforeUploadEvent evt) { //校验上传权限,无权时取消继续上传文件 if (validatePermission()){ Map<String, Integer> param = new HashMap<>(1); param.put("status", 0); // 传递前端中止指令, 不继续执行文件上传 ((IClientViewProxy) getView().getService(IClientViewProxy.class)).addAction("beforeUploadResult", param); } } @Override public void upload(UploadEvent evt) { Object[] urls = evt.getUrls(); if (null != urls && urls.length > 0) { FileService service = FileServiceFactory.getAttachmentFileService(); InputStream inputStream = service.getInputStream((String) urls[0]); //获取文件流校验文件 } } @Override public void afterUpload(UploadEvent evt) { //上传后记录操作日志 AppLogInfo appLogInfo = new AppLogInfo(); appLogInfo.setBizAppID(BizAppServiceHelp.getAppIdByFormNum(getView().getEntityId())); appLogInfo.setBizObjID((getView().getEntityId())); appLogInfo.setOpName("上传文件"); appLogInfo.setOpDescription(String.format("上传文件:%s成功。", Arrays.toString(evt.getNames()))); ILogService service = ServiceFactory.getService(ILogService.class); service.addLog(appLogInfo); } } ``` # **4** **注意事项** 支持上传文件的控件有:按钮、标签、图片展示、图标、图片列表、附件面板。 其中,按钮、标签、图片展示、图标控件要上传文件需要在设计器中开启“允许点击”和“上传按钮”参数。 ![image-20230331174540110.webp](/download/0100247994953d6e43f0a0b1114fe5ec6d49.webp) 以上控件在上传或删除时执行的接口方法: | 接口方法 | 按钮 | 标签 | 图片展示 | 图标 | 图片列表 | 附件面板 | | ------------ | ---- | ---- | -------- | ---- | -------- | -------- | | beforeUpload | √ | √ | √ | √ | × | × | | upload | √ | √ | √ | √ | √ | √ | | afterUpload | √ | √ | √ | √ | × | √ | | remove | × | × | × | × | √ | √ | | afterRemove | × | × | × | × | × | √ |

上传按钮附件相关操作插件介绍

# **1** **业务场景**- 使用上传按钮上传附件时,需要在上传前后增加业务逻辑,如对上传校验权限、对上传的文件校验文件内容、上传后记...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息