附件管理批量下载时干预附件下载生成名称原创
金蝶云社区-我在终点等你
我在终点等你
89人赞赏了该文章 501次浏览 未经作者许可,禁止转载编辑于2024年03月04日 17:03:11

背景:

一、目前附件管理上传的附件,选中多份下载的话是会生成一个压缩包,然后下载后会在原文件名称后面加上文件内码或者时间戳之类的,其实附件下载名称是可以干预的。

二、实现方法:

需要编写列表插件,扩展“附件明细”业务对象,取消标准附件列表插件,改用二开插件。二开插件继承自标准的附件列表插件,如下,

重写 FileNameFormat 方法

即可:Kingdee.BOS.Business.PlugIn.Attachment.AttachmentListPlugIn, Kingdee.BOS.Business.PlugIn

三、实例案例:

把原来的附件下载名称由文件名+内码改为直接下载就是文件名。例如截图:

image.png

示例代码如下:

image.png

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

using Kingdee.BOS.Business.PlugIn.Attachment;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Util;

using System.ComponentModel;


namespace Running.Sample.PlugIn.BusinessPlugIn.DynamicForm

{

    [Description("批量下载自定义文件名"), HotUpdate]

    public class P20200918FileNameDynPlugIn : Kingdee.BOS.Business.PlugIn.Attachment.AttachmentListPlugIn

    {

        /// <summary>

        /// 传入附件信息的实体数据包,对文件名进行格式化,返回格式化后的文件名,包含文件后缀。

        /// </summary>

        /// <param name="dyn">附件信息的实体数据包。</param>

        /// <returns>返回格式化后的文件名,包含文件后缀。</returns>

        protected override string FileNameFormat(DynamicObject dyn)

        {

            string fileName = dyn["AttachmentName"].GetString();

            string fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName);

            string ext = Path.GetExtension(fileName);

            return string.Format("{0}{1}", fileNameWithoutExt, ext);

        }

    }

}

1、把生成的DLL文件拷贝到website的bin目录下。

image.png

image.png

2、然后打开BOS平台查询找到附件明细,并进行扩展

image.png

3、找到列表插件,然后取消掉自带的,然后注册刚编译好的新插件。

image.png

4、最后重启IIS,登录星空系统,查看效果。

image.png

image.png

最后看效果,只显示文件名称了,去除了文件名称后缀。目前附件管理上传附件未做重复校验,跟总部有沟通后续会优化此相关功能。


图标赞 89
89人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0