上传按钮附件相关操作插件介绍
# **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** **业务场景**- 使用上传按钮上传附件时,需要在上传前后增加业务逻辑,如对上传校验权限、对上传的文件校验文件内容、上传后记...
点击下载文档
本文2024-09-23 00:39:00发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140832.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章