二开案例.文件服务.文件下载
【应用场景】生成文件及文件下载地址(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
二开案例.文件服务.文件下载
本文2024-09-23 04:20:50发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164714.html