金蝶附件中,有一个下载功能,是金蝶自带的,点击下载会把所有文件全部都打包成一个压缩包下载下来,那么如果我们想自己做一个下载,有几种办法
第一种,输入需要下载的url,直接弹出浏览器下载
/// <summary>
/// 打开一个窗口,窗口中包含一个链接:用户点击此链接打开URL地址
/// </summary>
private void OpenURLWindow(string url)
{
Kingdee.BOS.JSON.JSONArray jSONArray = new Kingdee.BOS.JSON.JSONArray();
Kingdee.BOS.JSON.JSONObject jSONObject = new Kingdee.BOS.JSON.JSONObject();
jSONObject.Put("url", System.Web.HttpUtility.UrlEncode(url)); // 需引用System.Web.dll
jSONObject.Put("title", "下载");
jSONArray.Add(jSONObject);
// 要求前端,调用openUrlWindow方法,显示一个小窗口,窗口中包含一个Url链接
this.View.AddAction("openUrlWindow", jSONArray);
this.View.SendDynamicFormAction(this.View);
}
第二种,输入要下载的url,直接弹出一个动态表单来下载
/// <summary>
/// 打开一个窗口,在此窗口直接打开URL地址
/// </summary>
private void ShowKDWebBrowseForm(string url)
{
Kingdee.BOS.JSON.JSONObject webobj = new Kingdee.BOS.JSON.JSONObject();
webobj["source"] = url;
webobj["height"] = 545;
webobj["width"] = 810;
webobj["isweb"] = false; //是否新弹出一个浏览器窗口(or选项卡)打开网页地址
webobj["title"] = "下载";
// 要求前端,调用ShowKDWebbrowseForm方法,显示指定的网页
this.View.AddAction("ShowKDWebbrowseForm", webobj);
this.View.SendDynamicFormAction(this.View);
}
第三种,输入url,然后弹出一个提示,点击下载附件,点了就弹出浏览器下载(这个是金蝶原生下载就是这么做的)
private void DownLoadZipFile()
{
string _temppDirectory = System.Guid.NewGuid().ToString();
// string value = string.Concat(new string[]
// {
//this._webapprooturl,
//"/",
//KeyConst.TEMPFILEPATH,
//"/",
//this._zipfilename
// });
DynamicFormShowParameter dynamicFormShowParameter = new DynamicFormShowParameter();
dynamicFormShowParameter.FormId = "BOS_FileDownLoad";
//dynamicFormShowParameter.CustomParams.Add("url", value);
dynamicFormShowParameter.CustomParams.Add("linktext", ResManager.LoadKDString("点击下载附件", "002014030028722", SubSystemType.BOS, new object[0]));
this.View.ShowForm(dynamicFormShowParameter);
}
我曾经遇到一个需求,就是要更改附件管理里面的下载功能,金蝶原生的下载功能,是把所有的文件打包然后下载下来,需求要我做到,选中单个文件,然后点击下载,只下载单个文件,还有一个就是选中多个文件,然后点击下载,把选中的多个文件打包,然后下载下来。
解决办法:直接去找到金蝶原生的下载功能源码,把源码反编译之后,了解金蝶是怎么做这个下载功能的,直接复制出来,改动一下就好了,前提是你要看懂逻辑。
如果有需要下载功能扩展或者交流的,可以加我的微信公众号,楼梯间的男孩,我们一起讨论哦。发私信我都可以接到的呢