欲知附件用法,且听本文分解(上)
附件可以说是我们最常用的控件之一了,但是你可能不知道,除了上传、下载、预览、删除文件等功能以外,附件其实还有很多细节满满的强大功能等待我们去发现。本期小编就为大家一一介绍~
1 适用场景
附件多用于上传文件,比如xls/doc/ppt等格式的文件,可以用来补充表单资料的信息。除了上传功能以外,我们还能通过附件控件,实现常见的文件预览。
2 如何使用
接下来我们将主要从附件大小、格式、数量配置,附件附加信息配置,附件操作按钮的权限控制以及自定义附件操作按钮四个方面入手,教大家如何进行相应的操作。
2.1 附件大小、格式、数量配置
进入开发平台【设计器】页面后,我们可以在【设计器】页面中配置附件的大小、数量以及允许上传的文件格式:
最大附件大小:附件的大小限制,单位为MB;
最大附件数:允许上传的附件数量;
扩展名:附件的类型限制,内容为文件名后缀不带".",以","或者空格隔开,例如jpg,png,gif
在设计器中配置的属性都只作用于当前控件,如果用户想要配置系统级别的附件大小和格式,可以配置系统参数。
配置路径:【配置工具】→【系统参数】→【公共参数】→【附件配置 →【附件上传大小限制】/【禁止上传附件类型】
【系统参数】页面展示如下:
对于附件大小,由控件属性以及系统参数配置项中较小的一个决定。例如:控件属性配置的最大附件大小是30M,系统参数配置的是10M,附件最终只能允许上传10M以内的文件;
而对于附件类型,控件属性设置的是白名单,系统配置的是黑名单。例如,控件属性配置的扩展名是jpg,png,gif,系统参数配置的黑名单是gif,附件最终只能允许上传jpg,png类型的文件。
2.2 附件附加信息配置
如图所示,在附件上传成功后,默认会显示"附件名称"、"大小"、"创建人"、"创建日期"和"备注"按钮。
当然,我们也可以在设计器中,通过开关控制"创建人"、"创建日期"、"备注"按钮的显示:
2.3 附件操作按钮的权限控制
附件项默认的操作包括预览、下载、重命名和删除。我们可以通过插件,根据用户的不同权限,显示不同的操作按钮。
插件的代码实现如下:
//a. 插件类实现 kd.bos.servicehelper.attachment.IAbstractAttachManagerPlugin //b. 重写 checkAttachPerm 方法: @Override public List<AttachmentInfo> checkAttachPerm(List<AttachmentInfo> data) { for (AttachmentInfo attachmentInfo : data) { // 隐藏下载按钮 attachmentInfo.setVisibleDownload(false); } }
2.4 自定义附件操作按钮
我们还可以添加自定义按钮,满足不同场景的需求。如下面的插件代码,添加了"分享"和"打印"两个按钮:
public class TestPluginAttachment extends AbstractBillPlugin implements AttachmentOperaClickListener { private static final String KEY_BUTTON = "buttonap"; private static final String KEY_ATTACHMENTPANEL = "attachmentpanel"; @Override public void registerListener(EventObject evt) { this.addClickListeners(KEY_BUTTON); AttachmentPanel panel = this.getControl(KEY_ATTACHMENTPANEL) panel.addOperaClickListener(this); } @Override public void click(EventObject evt) { Control ctl = (Control) evt.getSource(); if (KEY_BUTTON.equals(ctl.getKey())) { AttachmentPanel panel = this.getControl(KEY_ATTACHMENTPANEL); List<AttachBtnOption> btns = new ArrayList<AttachBtnOption>(); btns.add(new AttachBtnOption("attopiton_1"), new LocaleString("分享")); btns.add(new AttachBtnOption("attoption_2"), new LocaleString("打印")); panel.addAttachOperaBtns(btns); } } @Override public void attachmentOperaClick(AttachmentOperaClickEvent e) { AttachmentPanel panel = this.getControl(KEY_ATTACHMENTPANEL); Map<String, String> attinfo = (Map<String, String>) e.getAttachmentInfo(); List<Map<String, Object>> atts = panel.getAttachmentData(); Map<String, Object> att = null; for (Map<String, Object> map : atts) { String uid = (String) map.get("uid"); if (uid.equals(attinfo.get("uid"))) { att = map; continue; } } if ("attopiton_1".contentEquals(e.getOperaKey())) { System.out.println("分享附件: " + att.get("name") + att.get("url")); } } }
添加后的展示页面如下:
到这里,附件的常用功能就介绍完毕了,接下来我们也会陆续给大家分享附件预览功能相关使用的文章,敬请期待!
#往期推荐#
更多精彩内容,“码”上了解!↓
欲知附件用法,且听本文分解(上)
本文2024-09-23 00:42:16发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141182.html