using System; using System.IO; using System.Collections.Generic; using System.Text; using System.Web; using BP.DA; using BP.Sys; using BP.Web; using BP.En; using BP.WF.Template; using System.Net.Http; using System.Collections; using LitJson; using System.Net; using BP.Tools; using System.Drawing; using BP.Difference; namespace BP.WF.HttpHandler { /// /// 表单 /// public class CCMobile_CCForm : DirectoryPageBase { /// /// 构造函数 /// public CCMobile_CCForm() { BP.Web.WebUser.SheBei = "Mobile"; } public string HandlerMapExt() { WF_CCForm en = new WF_CCForm(); return en.HandlerMapExt(); } public string AttachmentUpload_Down() { WF_CCForm ccform = new WF_CCForm(); return ccform.AttachmentUpload_Down(); } /// /// 表单初始化. /// /// public string Frm_Init() { WF_CCForm ccform = new WF_CCForm(); return ccform.Frm_Init(); } public string FrmGener_Init() { WF_CCForm ccform = new WF_CCForm(); return ccform.FrmGener_Init(); } public string Dtl_Init() { WF_CCForm ccform = new WF_CCForm(); return ccform.Dtl_Init(); } //保存从表数据 public string Dtl_SaveRow() { #region 查询出来从表数据. GEDtls dtls = new GEDtls(this.EnsName); GEDtl dtl = dtls.GetNewEntity as GEDtl; dtls.Retrieve("RefPK", this.GetRequestVal("RefPKVal")); MapDtl mdtl = new MapDtl(this.EnsName); Map map = dtl.EnMap; foreach (GEDtl item in dtls) { string pkval = item.GetValStringByKey(dtl.PK); foreach (Attr attr in map.Attrs) { if (attr.IsRefAttr == true) continue; if (attr.MyDataType == DataType.AppDateTime || attr.MyDataType == DataType.AppDate) { if (attr.UIIsReadonly == true) continue; string val = this.GetValFromFrmByKey("TB_" + attr.Key + "_" + pkval, null); item.SetValByKey(attr.Key, HttpUtility.UrlDecode(val, Encoding.UTF8)); continue; } if (attr.UIContralType == UIContralType.TB) { string val = this.GetValFromFrmByKey("TB_" + attr.Key + "_" + pkval, null); item.SetValByKey(attr.Key, HttpUtility.UrlDecode(val, Encoding.UTF8)); continue; } if (attr.UIContralType == UIContralType.DDL) { string val = this.GetValFromFrmByKey("DDL_" + attr.Key + "_" + pkval); item.SetValByKey(attr.Key, HttpUtility.UrlDecode(val, Encoding.UTF8)); continue; } if (attr.UIContralType == UIContralType.CheckBok) { string val = this.GetValFromFrmByKey("CB_" + attr.Key + "_" + pkval, "-1"); if (val == "0") item.SetValByKey(attr.Key, 0); else item.SetValByKey(attr.Key, 1); continue; } } item.SetValByKey("OID",pkval); //关联主赋值. item.RefPK = this.RefPKVal; switch (mdtl.DtlOpenType) { case DtlOpenType.ForEmp: // 按人员来控制. item.RefPK = this.RefPKVal; break; case DtlOpenType.ForWorkID: // 按工作ID来控制 item.RefPK = this.RefPKVal; item.FID = this.FID; break; case DtlOpenType.ForFID: // 按流程ID来控制. item.RefPK = this.RefPKVal; item.FID = this.FID; break; } item.Rec = WebUser.No; item.Update(); //执行更新. } return "保存成功."; #endregion 查询出来从表数据. } //多附件上传方法 public string UploadIOSAttach() { string uploadFileM = ""; //上传附件数据的MyPK,用逗号分开 string pkVal = this.GetRequestVal("PKVal"); string attachPk = this.GetRequestVal("FK_FrmAttachment"); string sort = this.GetRequestVal("Sort"); string fileSoruce = this.GetRequestVal("fileSource"); string fileName = this.GetRequestVal("fileName"); string ext = this.GetRequestVal("Ext"); // 多附件描述. BP.Sys.FrmAttachment athDesc = new BP.Sys.FrmAttachment(attachPk); MapData mapData = new MapData(athDesc.FK_MapData); string msg = ""; //求出来实体记录,方便执行事件. GEEntity en = new GEEntity(athDesc.FK_MapData); en.PKVal = pkVal; if (en.RetrieveFromDBSources() == 0) { en.PKVal = this.FID; if (en.RetrieveFromDBSources() == 0) { en.PKVal = this.PWorkID; en.RetrieveFromDBSources(); } } //求主键. 如果该表单挂接到流程上. if (this.FK_Node != 0) { //判断表单方案。 FrmNode fn = new FrmNode(this.FK_Node, this.FK_MapData); if (fn.FrmSln == FrmSln.Self) { BP.Sys.FrmAttachment myathDesc = new FrmAttachment(); myathDesc.setMyPK(attachPk + "_" + this.FK_Node); if (myathDesc.RetrieveFromDBSources() != 0) athDesc.HisCtrlWay = myathDesc.HisCtrlWay; } pkVal = BP.WF.Dev2Interface.GetAthRefPKVal(this.WorkID, this.PWorkID, this.FID, this.FK_Node, this.FK_MapData, athDesc); } //获取上传文件是否需要加密 bool fileEncrypt = BP.Difference.SystemConfig.IsEnableAthEncrypt; #region 文件上传的iis服务器上 or db数据库里. if (athDesc.AthSaveWay == AthSaveWay.IISServer || athDesc.AthSaveWay == AthSaveWay.DB) { string savePath = athDesc.SaveTo; if (savePath.Contains("@") == true || savePath.Contains("*") == true) { /*如果有变量*/ savePath = savePath.Replace("*", "@"); if (savePath.Contains("@") && this.FK_Node != 0) { /*如果包含 @ */ BP.WF.Flow flow = new BP.WF.Flow(this.FK_Flow); BP.WF.GERpt myen = flow.HisGERpt; myen.OID = this.WorkID; myen.RetrieveFromDBSources(); savePath = BP.WF.Glo.DealExp(savePath, myen, null); } if (savePath.Contains("@") == true) throw new Exception("@路径配置错误,变量没有被正确的替换下来." + savePath); } else { savePath = athDesc.SaveTo + "/" + pkVal; } //替换关键的字串. savePath = savePath.Replace("\\\\", "/"); try { if (savePath.Contains(BP.Difference.SystemConfig.PathOfWebApp) == false) savePath = BP.Difference.SystemConfig.PathOfWebApp + savePath; } catch (Exception ex) { savePath = BP.Difference.SystemConfig.PathOfDataUser + "UploadFile/" + mapData.No + "/"; //return "err@获取路径错误" + ex.Message + ",配置的路径是:" + savePath + ",您需要在附件属性上修改该附件的存储路径."; } try { if (System.IO.Directory.Exists(savePath) == false) System.IO.Directory.CreateDirectory(savePath); } catch (Exception ex) { throw new Exception("err@创建路径出现错误,可能是没有权限或者路径配置有问题:" + savePath + "@异常信息:" + ex.Message); } string guid = DBAccess.GenerGUID(); string realSaveTo = savePath + "/" + guid + "." + fileName; realSaveTo = realSaveTo.Replace("~", "-"); realSaveTo = realSaveTo.Replace("'", "-"); realSaveTo = realSaveTo.Replace("*", "-"); if (fileEncrypt == true) { string strtmp = realSaveTo + ".tmp"; Base64StrToImage(fileSoruce, strtmp); EncHelper.EncryptDES(strtmp, strtmp.Replace(".tmp", ""));//加密 File.Delete(strtmp);//删除临时文件 } else { //文件保存的路径 Base64StrToImage(fileSoruce, realSaveTo); } //执行附件上传前事件,added by liuxc,2017-7-15 msg = ExecEvent.DoFrm(mapData, EventListFrm.AthUploadeBefore, en, "@FK_FrmAttachment=" + athDesc.MyPK + "@FileFullName=" + realSaveTo); if (!DataType.IsNullOrEmpty(msg)) { BP.Sys.Base.Glo.WriteLineError("@AthUploadeBefore事件返回信息,文件:" + fileName + "," + msg); File.Delete(realSaveTo); } FileInfo info = new FileInfo(realSaveTo); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.setMyPK(guid); dbUpload.NodeID = this.FK_Node; dbUpload.Sort = sort; dbUpload.setFK_MapData(athDesc.FK_MapData); dbUpload.FK_FrmAttachment = attachPk; dbUpload.FileExts = info.Extension; dbUpload.FID = this.FID; if (fileEncrypt == true) dbUpload.SetPara("IsEncrypt", 1); dbUpload.FileFullName = realSaveTo; dbUpload.FileName = fileName; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDateTimess; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; dbUpload.FK_Dept = WebUser.FK_Dept; dbUpload.FK_DeptName = WebUser.FK_DeptName; dbUpload.RefPKVal = pkVal; dbUpload.FID = this.FID; dbUpload.UploadGUID = guid; dbUpload.Insert(); //执行附件上传后事件,added by liuxc,2017-7-15 msg = ExecEvent.DoFrm(mapData, EventListFrm.AthUploadeAfter, en, "@FK_FrmAttachment=" + dbUpload.FK_FrmAttachment + "@FK_FrmAttachmentDB=" + dbUpload.MyPK + "@FileFullName=" + dbUpload.FileFullName); if (!DataType.IsNullOrEmpty(msg)) BP.Sys.Base.Glo.WriteLineError("@AthUploadeAfter事件返回信息,文件:" + dbUpload.FileName + "," + msg); } #endregion 文件上传的iis服务器上 or db数据库里. #region 保存到数据库 / FTP服务器上. if (athDesc.AthSaveWay == AthSaveWay.FTPServer) { string guid = DBAccess.GenerGUID(); //把文件临时保存到一个位置. string temp = BP.Difference.SystemConfig.PathOfTemp + "" + guid + ".tmp"; if (fileEncrypt == true) { string strtmp = BP.Difference.SystemConfig.PathOfTemp + "" + guid + "_Desc" + ".tmp"; Base64StrToImage(fileSoruce, strtmp); EncHelper.EncryptDES(strtmp, temp);//加密 File.Delete(strtmp);//删除临时文件 } else { //文件保存的路径 Base64StrToImage(fileSoruce, temp); } //执行附件上传前事件,added by liuxc,2017-7-15 msg = ExecEvent.DoFrm(mapData, EventListFrm.AthUploadeBefore, en, "@FK_FrmAttachment=" + athDesc.MyPK + "@FileFullName=" + temp); if (DataType.IsNullOrEmpty(msg) == false) { BP.Sys.Base.Glo.WriteLineError("@AthUploadeBefore事件返回信息,文件:" +fileName + "," + msg); File.Delete(temp); throw new Exception("err@上传附件错误:" + msg); } FileInfo info = new FileInfo(temp); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.setMyPK(DBAccess.GenerGUID()); dbUpload.Sort = sort; dbUpload.NodeID = FK_Node; dbUpload.setFK_MapData(athDesc.FK_MapData); dbUpload.FK_FrmAttachment = athDesc.MyPK; dbUpload.FID = this.FID; //流程id. if (fileEncrypt == true) dbUpload.SetPara("IsEncrypt", 1); dbUpload.RefPKVal = pkVal.ToString(); dbUpload.setFK_MapData(athDesc.FK_MapData); dbUpload.FK_FrmAttachment = athDesc.MyPK; dbUpload.FileName = fileName; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDateTimess; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; dbUpload.FK_Dept = WebUser.FK_Dept; dbUpload.FK_DeptName = WebUser.FK_DeptName; dbUpload.UploadGUID = guid; if (athDesc.AthSaveWay == AthSaveWay.FTPServer) { /*保存到fpt服务器上.*/ BP.FtpConnection ftpconn = new BP.FtpConnection(BP.Difference.SystemConfig.FTPServerIP, SystemConfig.FTPServerPort, SystemConfig.FTPUserNo, BP.Difference.SystemConfig.FTPUserPassword); string ny = DateTime.Now.ToString("yyyy_MM"); //判断目录年月是否存在. if (ftpconn.DirectoryExist(ny) == false) ftpconn.CreateDirectory(ny); ftpconn.SetCurrentDirectory(ny); //判断目录是否存在. if (ftpconn.DirectoryExist(athDesc.FK_MapData) == false) ftpconn.CreateDirectory(athDesc.FK_MapData); //设置当前目录,为操作的目录。 ftpconn.SetCurrentDirectory(athDesc.FK_MapData); //把文件放上去. try { ftpconn.PutFile(temp, guid + "." + dbUpload.FileExts); } catch { throw new Exception("err@FTP端口号受限或者防火墙未关闭"); } ftpconn.Close(); //设置路径. dbUpload.FileFullName = ny + "//" + athDesc.FK_MapData + "//" + guid + "." + dbUpload.FileExts; dbUpload.Insert(); File.Delete(temp); } //执行附件上传后事件,added by liuxc,2017-7-15 msg = ExecEvent.DoFrm(mapData, EventListFrm.AthUploadeAfter, en, "@FK_FrmAttachment=" + dbUpload.FK_FrmAttachment + "@FK_FrmAttachmentDB=" + dbUpload.MyPK + "@FileFullName=" + temp); if (DataType.IsNullOrEmpty(msg) == false) BP.Sys.Base.Glo.WriteLineError("@AthUploadeAfter事件返回信息,文件:" + dbUpload.FileName + "," + msg); } #endregion 保存到数据库. return "上传成功"; } public void Base64StrToImage(string base64Str, string savePath) { var ret = true; base64Str = base64Str.Replace(" ", "+"); string[] str = base64Str.Split(','); //base64Str为base64完整的字符串,先处理一下得到我们所需要的字符串 byte[] imageBytes = Convert.FromBase64String(str[1]); //读入MemoryStream对象 MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length); memoryStream.Write(imageBytes, 0, imageBytes.Length); // 转成图片 Image image = Image.FromStream(memoryStream); // 图片名称 string iname = DateTime.Now.ToString("yyMMddhhmmss"); image.Save(savePath); // 将图片存到本地 } /// /// 获取百度云token /// /// public string getAccessToken() { string ak = BP.Difference.SystemConfig.APIKey; string sk = BP.Difference.SystemConfig.SecretKey; //百度云应用获取token String authHost = "https://aip.baidubce.com/oauth/2.0/token"; HttpClient client = new HttpClient(); List> paraList = new List>(); paraList.Add(new KeyValuePair("grant_type", "client_credentials")); paraList.Add(new KeyValuePair("client_id", ak)); paraList.Add(new KeyValuePair("client_secret", sk)); HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result; String result = response.Content.ReadAsStringAsync().Result; Console.WriteLine(result); return result; } public string GetAccessTokenImgs() { //获取 AccessToken return BP.GPM.WeiXin.WeiXinEntity.getAccessToken(); } /// /// 下载微信服务器图片,上传到应用服务器 /// /// public string MyFlowGener_SaveUploadeImg() { try { string media_id = this.GetRequestVal("IDs"); string athMyPK = this.GetRequestVal("AthMyPK"); //图片组件. FrmAttachment athDesc = new FrmAttachment(athMyPK); if (string.IsNullOrEmpty(media_id)) { return "media_id为空"; } string accessToken = GetAccessTokenImgs(); //BP.DA.Log.DebugWriteError("accessToken:" + accessToken); Bitmap img = null; HttpWebRequest req; HttpWebResponse res = null; string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", accessToken, media_id); System.Uri httpUrl = new System.Uri(url); req = (HttpWebRequest)(WebRequest.Create(httpUrl)); req.Timeout = 180000; //设置超时值10秒 req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; req.Method = "GET"; res = (HttpWebResponse)(req.GetResponse()); img = new Bitmap(res.GetResponseStream());//获取图片流 //BP.DA.Log.DebugWriteError(res.GetResponseHeader("Content-Type")); string fileName = res.GetResponseHeader("Content-Disposition").Replace("attachment; filename=", "").Replace("\"", ""); img.Save(BP.Difference.SystemConfig.PathOfTemp + fileName); BP.DA.Log.DebugWriteError(this.FK_Node+":"+this.FK_Flow + ":" + this.WorkID + ":" + athDesc.NoOfObj + ":" + athDesc.FK_MapData + ":" + BP.Difference.SystemConfig.PathOfTemp + fileName + ":" + fileName); BP.WF.CCFormAPI.CCForm_AddAth(this.FK_Node,this.FK_Flow, this.WorkID, athMyPK, athDesc.FK_MapData, BP.Difference.SystemConfig.PathOfTemp + fileName, fileName); return "执行成功"; } catch (Exception ex) { string msg = "err@GetMedia:" + ex.Message + " -- " + ex.StackTrace; BP.DA.Log.DebugWriteError(msg); return msg; } } public static byte[] BitmapToBytes(Bitmap Bitmap) { MemoryStream ms = null; try { ms = new MemoryStream(); Bitmap.Save(ms, Bitmap.RawFormat); byte[] byteImage = new Byte[ms.Length]; byteImage = ms.ToArray(); return byteImage; } catch (ArgumentNullException ex) { throw ex; } finally { ms.Close(); } } /// /// 调用企业号获取地理位置 /// /// public string GetWXConfigSetting() { string htmlPage = this.GetRequestVal("htmlPage"); Hashtable ht = new Hashtable(); //生成签名的时间戳 string timestamp = DateTime.Now.ToString("yyyyMMDDHHddss"); //生成签名的随机串 string nonceStr = BP.DA.DBAccess.GenerGUID(); //企业号jsapi_ticket string jsapi_ticket = ""; string url1 = htmlPage; //获取 AccessToken string accessToken = BP.GPM.WeiXin.WeiXinEntity.getAccessToken(); string url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + accessToken; string str = DataType.ReadURLContext(url); //权限签名算法 BP.GPM.WeiXin.Ticket ticket = new BP.GPM.WeiXin.Ticket(); ticket = FormatToJson.ParseFromJson(str); if (ticket.errcode == "0") jsapi_ticket = ticket.ticket; else return "err:@获取jsapi_ticket失败+accessToken=" + accessToken; ht.Add("timestamp", timestamp); ht.Add("nonceStr", nonceStr); //企业微信的corpID ht.Add("AppID", BP.Difference.SystemConfig.WX_CorpID); //生成签名算法 string str1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url1 + ""; string Signature = BP.WF.Difference.Glo.Sha1Signature(str1); ht.Add("signature", Signature); return BP.Tools.Json.ToJson(ht); } public string GetIDCardInfo() { string token = getAccessToken(); JsonData jd = JsonMapper.ToObject(token); string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=" + jd["access_token"].ToString(); Encoding encoding = Encoding.Default; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); request.Method = "post"; request.KeepAlive = true; // 图片的base64编码 var files = HttpContextHelper.RequestFiles(); //context.Request.Files; if (files.Count == 0) return "err@请选择要上传的身份证件。"; Stream stream = files[0].InputStream;//new MemoryStream(); byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); string base64 = Convert.ToBase64String(bytes); stream.Close(); String str = "id_card_side=" + "front" + "&image=" + HttpUtility.UrlEncode(base64); byte[] buffer = encoding.GetBytes(str); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string result = reader.ReadToEnd(); return result; } /// /// 获取微信公众号的签名 /// /// public string GetWXGZHConfigSetting() { string htmlPage = this.GetRequestVal("htmlPage"); Hashtable ht = new Hashtable(); //生成签名的时间戳 string timestamp = DateTime.Now.ToString("yyyyMMDDHHddss"); //生成签名的随机串 string nonceStr = BP.DA.DBAccess.GenerGUID(); //企业号jsapi_ticket string jsapi_ticket = ""; string url1 = htmlPage; //获取 AccessToken BP.WF.WeiXin.GZH.WeiXinGZHModel.AccessToken accessToken = BP.WF.WeiXin.WeiXinGZHEntity.getAccessToken(); if (accessToken.errcode!= "0"&& DataType.IsNullOrEmpty(accessToken.errcode)==false) return "err@获取网页授权失败,errcode:" + accessToken.errcode; string token = accessToken.access_token; string url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token+ "&type=jsapi"; string str = BP.Tools.PubGlo.HttpGet(url); //权限签名算法 BP.GPM.WeiXin.Ticket ticket = new BP.GPM.WeiXin.Ticket(); ticket = FormatToJson.ParseFromJson(str); if (ticket.errcode == "0") jsapi_ticket = ticket.ticket; else return "err@获取jsapi_ticket失败+accessToken=" + token; ht.Add("timestamp", timestamp); ht.Add("nonceStr", nonceStr); //企业微信的corpID ht.Add("AppID", BP.Difference.SystemConfig.WXGZH_Appid); //生成签名算法 string str1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url1 + ""; string Signature = BP.WF.Difference.Glo.Sha1Signature(str1); ht.Add("signature", Signature); return BP.Tools.Json.ToJson(ht); } public string WXGZH_AthUpload() { HttpPostedFile file = HttpContextHelper.RequestFiles(0); if(file == null) { return "err@请选择文件"; } //string imageData = this.GetRequestVal("ImageData"); //if (DataType.IsNullOrEmpty(imageData) == true) // return ""; //Log.DebugWriteInfo("上传附件信息ImageData:" + imageData); // 多附件描述. string pkVal = this.GetRequestVal("PKVal"); string attachPk = this.GetRequestVal("AttachPK"); BP.Sys.FrmAttachment athDesc = new BP.Sys.FrmAttachment(attachPk); MapData mapData = new MapData(athDesc.FK_MapData); string msg = ""; //求出来实体记录,方便执行事件. GEEntity en = new GEEntity(athDesc.FK_MapData); en.PKVal = pkVal; if (en.RetrieveFromDBSources() == 0) { en.PKVal = this.FID; if (en.RetrieveFromDBSources() == 0) { en.PKVal = this.PWorkID; en.RetrieveFromDBSources(); } } //求主键. 如果该表单挂接到流程上. if (this.FK_Node != 0 && athDesc.NoOfObj.Contains("AthMDtl") == false) { //判断表单方案。 FrmNode fn = new FrmNode(this.FK_Node, this.FK_MapData); if (fn.FrmSln == FrmSln.Self) { BP.Sys.FrmAttachment myathDesc = new FrmAttachment(); myathDesc.setMyPK(attachPk + "_" + this.FK_Node); if (myathDesc.RetrieveFromDBSources() != 0) athDesc.HisCtrlWay = myathDesc.HisCtrlWay; } pkVal = BP.WF.Dev2Interface.GetAthRefPKVal(this.WorkID, this.PWorkID, this.FID, this.FK_Node, this.FK_MapData, athDesc); } string savePath = ""; string fileName = DBAccess.GenerGUID(); if (athDesc.AthSaveWay == AthSaveWay.IISServer) { savePath = athDesc.SaveTo + "/" + pkVal; if (System.IO.Directory.Exists(savePath) == false) System.IO.Directory.CreateDirectory(savePath); savePath = savePath + "/" + fileName + ".png"; } if (athDesc.AthSaveWay == AthSaveWay.FTPServer) { savePath = BP.Difference.SystemConfig.PathOfTemp +fileName + ".tmp"; } file.SaveAs(savePath); //using (System.IO.FileStream fs = new FileStream(savePath, FileMode.Create)) //{ // using (BinaryWriter bw = new BinaryWriter(fs)) // { // byte[] data = Convert.FromBase64String(imageData); // bw.Write(data); // bw.Close(); // } //} string ny = DateTime.Now.ToString("yyyy_MM"); if (athDesc.AthSaveWay == AthSaveWay.FTPServer) { /*保存到fpt服务器上.*/ BP.FtpConnection ftpconn = null; try { ftpconn = new BP.FtpConnection(BP.Difference.SystemConfig.FTPServerIP, SystemConfig.FTPServerPort, SystemConfig.FTPUserNo, BP.Difference.SystemConfig.FTPUserPassword); } catch { throw new Exception("err@FTP连接失败请检查账号,密码,端口号是否正确"); } //判断目录年月是否存在. if (ftpconn.DirectoryExist(ny) == false) ftpconn.CreateDirectory(ny); ftpconn.SetCurrentDirectory(ny); //判断目录是否存在. if (ftpconn.DirectoryExist(athDesc.FK_MapData) == false) ftpconn.CreateDirectory(athDesc.FK_MapData); //设置当前目录,为操作的目录。 ftpconn.SetCurrentDirectory(athDesc.FK_MapData); //把文件放上去. try { ftpconn.PutFile(savePath, fileName + ".png"); } catch { throw new Exception("err@FTP端口号受限或者防火墙未关闭"); } ftpconn.Close(); } FileInfo info = new FileInfo(savePath); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.setMyPK(DBAccess.GenerGUID()); dbUpload.Sort = ""; dbUpload.NodeID = FK_Node; dbUpload.setFK_MapData(athDesc.FK_MapData); dbUpload.FK_FrmAttachment = athDesc.MyPK; dbUpload.FID = this.FID; //流程id. dbUpload.RefPKVal = pkVal.ToString(); dbUpload.setFK_MapData(athDesc.FK_MapData); dbUpload.FK_FrmAttachment = athDesc.MyPK; dbUpload.FileName = fileName+".png"; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDateTimess; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; dbUpload.FK_Dept = WebUser.FK_Dept; dbUpload.FK_DeptName = WebUser.FK_DeptName; dbUpload.FileExts = "png"; if (athDesc.AthSaveWay == AthSaveWay.IISServer) //文件方式保存 dbUpload.FileFullName = savePath; if (athDesc.AthSaveWay == AthSaveWay.FTPServer) dbUpload.FileFullName = ny + "//" + athDesc.FK_MapData + "//" + fileName + ".png"; dbUpload.Insert(); return "上传成功"; } } }