Commit f77a22d6 authored by tr's avatar tr

1、员工管理:添加图片分离支持

parent aed97366
...@@ -24,3 +24,4 @@ bin ...@@ -24,3 +24,4 @@ bin
/AppHome/*.pdb /AppHome/*.pdb
/AppHome/UpdateExecuter.pdb /AppHome/UpdateExecuter.pdb
/AppHome/UpdateExecuter.exe /AppHome/UpdateExecuter.exe
/AppHome/db.json
...@@ -23,11 +23,11 @@ namespace Tools.MyUtils ...@@ -23,11 +23,11 @@ namespace Tools.MyUtils
/// <returns></returns> /// <returns></returns>
public static string Upload(byte[] buffer) public static string Upload(byte[] buffer)
{ {
if (buffer == null)
return string.Empty;
//
try try
{ {
if (buffer == null)
throw new ArgumentNullException(nameof(buffer));
var md5 = Utils.ByteToMd5(buffer); var md5 = Utils.ByteToMd5(buffer);
var http = GetHttpClient(md5, false, null); var http = GetHttpClient(md5, false, null);
if (!http.IsExists()) if (!http.IsExists())
...@@ -320,7 +320,7 @@ namespace Tools.MyUtils ...@@ -320,7 +320,7 @@ namespace Tools.MyUtils
sb.Append("md5=").Append(this.Md5); sb.Append("md5=").Append(this.Md5);
var bytes = web.UploadData(url, "POST", Encoding.UTF8.GetBytes(sb.ToString())); var bytes = web.UploadData(url, "POST", Encoding.UTF8.GetBytes(sb.ToString()));
var content = Encoding.UTF8.GetString(bytes); var content = Encoding.UTF8.GetString(bytes);
return Convert.ToBoolean(content); return content == "1";
} }
} }
/// <summary> /// <summary>
......
...@@ -426,6 +426,37 @@ namespace Tools.MyUtils ...@@ -426,6 +426,37 @@ namespace Tools.MyUtils
|| dr.RowState == DataRowState.Detached; || dr.RowState == DataRowState.Detached;
} }
/// <summary>
/// 是否包含指定列
/// </summary>
/// <param name="drv"></param>
/// <param name="col"></param>
/// <returns></returns>
public static bool IsContainsColumn(DataRowView drv, string col)
{
return drv == null ? false : IsContainsColumn(drv.Row, col);
}
/// <summary>
/// 是否包含指定列
/// </summary>
/// <param name="dr"></param>
/// <param name="col"></param>
/// <returns></returns>
public static bool IsContainsColumn(DataRow dr, string col)
{
return dr == null ? false : IsContainsColumn(dr.Table, col);
}
/// <summary>
/// 是否包含指定列
/// </summary>
/// <param name="dt"></param>
/// <param name="col"></param>
/// <returns></returns>
public static bool IsContainsColumn(DataTable dt, string col)
{
return dt == null ? false : dt.Columns.Contains(col);
}
#endregion #endregion
#region (扩展)整型范围 #region (扩展)整型范围
...@@ -443,7 +474,41 @@ namespace Tools.MyUtils ...@@ -443,7 +474,41 @@ namespace Tools.MyUtils
#endregion #endregion
#region 图片分离(已弃用,使用MyUtils.SegPicture代替) #region 图片分离
/// <summary>
/// 图片分离:上载图片
/// </summary>
/// <param name="dt"></param>
public static void SegImage(DataTable dt, params string[] imgCols)
{
if (imgCols == null || imgCols.Length == 0)
return;
//列校验
List<string> LegalCols = new List<string>();
foreach (string col in imgCols)
{
if (Utils.IsContainsColumn(dt, col) && dt.Columns[col].DataType == typeof(byte[]))
LegalCols.Add(col);
}
if (LegalCols.Count == 0)
return;
//图片分离
foreach (DataRow r in dt.Rows)
{
if (Utils.IsIllegalDataRow(r))
continue;
foreach (string col in LegalCols)
{
var bytes = r[col] as byte[];
if (bytes != null)
{
r[col] = Encoding.UTF8.GetBytes(SegPicture.Upload(bytes));
}
}
r.EndEdit();
}
}
/// <summary> /// <summary>
/// 图片分离:取回图片 /// 图片分离:取回图片
...@@ -504,40 +569,11 @@ namespace Tools.MyUtils ...@@ -504,40 +569,11 @@ namespace Tools.MyUtils
/// <returns></returns> /// <returns></returns>
public static byte[] FetchImage(byte[] buffer) public static byte[] FetchImage(byte[] buffer)
{ {
//if (buffer == null || buffer.Length != 32) if (buffer.Length != 32)
// return buffer; return buffer;
//var url = $"http://jhdsoft.gicp.net:9203/hyerp/Download.aspx";
var md5 = Encoding.UTF8.GetString(buffer); var md5 = Encoding.UTF8.GetString(buffer);
//return DownloadByPost(url, md5);
return SegPicture.Download(md5, true); return SegPicture.Download(md5, true);
} }
/// <summary>
/// 【私有】下载文件
/// </summary>
/// <returns></returns>
private static byte[] DownloadByPost(string url, string md5)
{
byte[] result = null;
using (var web = new WebClient())
{
//初始化请求头
web.Proxy = null;
web.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//编码参数列表
var sb = new StringBuilder();
sb.Append("md5=").Append(md5);
try
{
//以POST方式发送请求
result = web.UploadData(url, "POST", Encoding.UTF8.GetBytes(sb.ToString()));
}
catch (Exception)
{
return null;
}
}
return result;
}
#endregion #endregion
#region MD5转换 #region MD5转换
......
...@@ -174,7 +174,6 @@ ...@@ -174,7 +174,6 @@
// //
// tsbSave // tsbSave
// //
this.tsbSave.Enabled = false;
this.tsbSave.Image = global::Tools.Properties.Resources.保存; this.tsbSave.Image = global::Tools.Properties.Resources.保存;
this.tsbSave.ImageTransparentColor = System.Drawing.Color.Magenta; this.tsbSave.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbSave.Name = "tsbSave"; this.tsbSave.Name = "tsbSave";
......
...@@ -35,7 +35,21 @@ namespace Tools.UI ...@@ -35,7 +35,21 @@ namespace Tools.UI
//事件:保存 //事件:保存
private void tsbSave_Click(object sender, EventArgs e) private void tsbSave_Click(object sender, EventArgs e)
{ {
//清空数据源
this.dgvDetail.DataSource = null; //避免数据校验报错
//图片分离处理
Utils.SegImage(this._ds.Tables[0], "Photo");
//保存数据
this.Save(); this.Save();
//取回图片
Utils.FetchImage(this._ds);
//重新绑定
this.dgvDetail.DataSource = this._ds.Tables[0].DefaultView;
}
private void DgvDetail_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
e.Cancel = true;
} }
public override void InitData() public override void InitData()
...@@ -44,6 +58,8 @@ namespace Tools.UI ...@@ -44,6 +58,8 @@ namespace Tools.UI
this.InitDBHelper(link); this.InitDBHelper(link);
this.ModuleTableList = new List<TQuery> { new TQuery("AC_User", "SELECT * FROM dbo.AC_User") }; this.ModuleTableList = new List<TQuery> { new TQuery("AC_User", "SELECT * FROM dbo.AC_User") };
this._ds = this._db.GetData(this.ModuleTableList, true); this._ds = this._db.GetData(this.ModuleTableList, true);
//图片分离兼容处理
SegConfig.Init(link);
Utils.FetchImage(this._ds); Utils.FetchImage(this._ds);
} }
public override void InitUI() public override void InitUI()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment