二开案例.文件服务.文件下载

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

二开案例.文件服务.文件下载

【应用场景】生成文件及文件下载地址(URL),并提供下载界面供用户下载文件。

【案例演示】创建动态表单,查询采购订单数据,导出到Excel文件中,生成该文件的下载地址,并弹出下载界面供用户下载。

【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.ServiceHelper;

using Kingdee.BOS.ServiceHelper.Excel;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【表单插件】文件下载

    /// </summary>

    [Description("【表单插件】文件下载"), HotUpdate]

    public class FileDownloadFormPlugIn : AbstractDynamicFormPlugIn

    {

        /// <summary>

        /// 文件下载临时目录(应用服务器)

        /// </summary>

        const string TempFileDir = "TempfilePath";


        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if (e.BarItemKey.Equals("tbDownload", StringComparison.OrdinalIgnoreCase))

            {

                Download();

            }

        }


        /// <summary>

        /// 下载文件

        /// </summary>

        private void Download()

        {

            // 读取数据

            var sql = "SELECT TOP 100 * FROM T_PUR_POORDER";

            var ds = DBServiceHelper.ExecuteDataSet(this.Context, sql);

            var fileName = string.Format("采购订单{0}.xlsx", DateTime.Now.ToString("yyyyMMddHHmmss"));

            // 生成文件的存储路径

            var filePath = PathUtils.GetPhysicalPath(TempFileDir, fileName);

            // 生成文件的下载地址(Url: http:\\localhost\K3Cloud\...\xxx.xlsx)

            var fileUrl = PathUtils.GetServerPath(TempFileDir, fileName);

            // 将数据导入到Excel文件

            using (var excelHelper = new ExcelOperation(this.View))

            {

                excelHelper.BeginExport();

                excelHelper.ExportToFile(ds.Tables[0]);

                excelHelper.EndExport(filePath, SaveFileType.XLSX);

            }


            // 打开文件下载界面(下载界面关闭后,临时文件会被删除)

            var showParameter = new DynamicFormShowParameter();

            showParameter.FormId = "BOS_FileDownLoad";

            showParameter.OpenStyle.ShowType = ShowType.Modal;

            showParameter.CustomParams.Add("url", fileUrl);

            this.View.ShowForm(showParameter);

        }

    }

}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE新建动态表单【文件下载[Jac_FileDownload]】(见文末附件),菜单集合添加下载菜单,注册表单插件,保存元数据。


<4>发布动态表单到主控台,开发完毕。

-- 发布菜单

DELETE T_META_CONSOLEDETAIL WHERE FDetailFuncId='5fbf114d53c8e7' 

INSERT INTO T_META_CONSOLEDETAIL(FDETAILFUNCID,FSUBFUNCID,FNUMBER,FOBJECTID,FTYPE,FSTATUS,FPERMISSIONITEMID,FSEQ,FPARAM,FCUSTOMPARAMS,FTHUMB,FLEVEL,FVISIBLE,FFUNCTIONGROUP,FAUTHPMOBJECTTYPEID,FHTMLSTATUS,FEXCELSTATUS,FH5OBJECTID) VALUES ('5fbf114d53c8e7','068cff00618e48f4b22623a826bca1ba',N'WJXZ','Jac_FileDownload','0','1',' ',5,N'{"FormId":"Jac_FileDownload","ShowType":"1","formType":"bill"}',N' ',' ',null,29,0,' ','1','0',null)  

DELETE T_META_CONSOLEDETAIL_L WHERE FDetailFuncId = '5fbf114d53c8e7' AND FLOCALEID =2052  

INSERT INTO T_META_CONSOLEDETAIL_L(FPKID,FDETAILFUNCID,FLOCALEID,FNAME,FDESCRIPTION) VALUES ('5fbf114d53c8e8','5fbf114d53c8e7',2052,N'文件下载',N' ')  







现在可以登录业务站点,打开菜单【文件下载】,检验一下文件下载功能啦。
















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.文件服务.文件下载

【应用场景】生成文件及文件下载地址(URL),并提供下载界面供用户下载文件。【案例演示】创建动态表单,查询采购订单数据,导出到Excel文件...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息