附件管理批量下载时干预附件下载生成名称

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

附件管理批量下载时干预附件下载生成名称

背景:

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

二、实现方法:

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

重写 FileNameFormat 方法

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

三、实例案例:

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

image.webp

示例代码如下:

image.webp

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.webp

image.webp

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

image.webp

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

image.webp

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

image.webp

image.webp

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



大佬看看我的问题呗

附件管理批量下载时干预附件下载生成名称

背景:一、目前附件管理上传的附件,选中多份下载的话是会生成一个压缩包,然后下载后会在原文件名称后面加上文件内码或者时间戳之类的,其...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息