Commit f77a22d6 authored by tr's avatar tr

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

parent aed97366
......@@ -24,3 +24,4 @@ bin
/AppHome/*.pdb
/AppHome/UpdateExecuter.pdb
/AppHome/UpdateExecuter.exe
/AppHome/db.json
......@@ -23,11 +23,11 @@ namespace Tools.MyUtils
/// <returns></returns>
public static string Upload(byte[] buffer)
{
if (buffer == null)
return string.Empty;
//
try
{
if (buffer == null)
throw new ArgumentNullException(nameof(buffer));
var md5 = Utils.ByteToMd5(buffer);
var http = GetHttpClient(md5, false, null);
if (!http.IsExists())
......@@ -320,7 +320,7 @@ namespace Tools.MyUtils
sb.Append("md5=").Append(this.Md5);
var bytes = web.UploadData(url, "POST", Encoding.UTF8.GetBytes(sb.ToString()));
var content = Encoding.UTF8.GetString(bytes);
return Convert.ToBoolean(content);
return content == "1";
}
}
/// <summary>
......
......@@ -426,6 +426,37 @@ namespace Tools.MyUtils
|| 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
#region (扩展)整型范围
......@@ -443,7 +474,41 @@ namespace Tools.MyUtils
#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>
/// 图片分离:取回图片
......@@ -504,40 +569,11 @@ namespace Tools.MyUtils
/// <returns></returns>
public static byte[] FetchImage(byte[] buffer)
{
//if (buffer == null || buffer.Length != 32)
// return buffer;
//var url = $"http://jhdsoft.gicp.net:9203/hyerp/Download.aspx";
if (buffer.Length != 32)
return buffer;
var md5 = Encoding.UTF8.GetString(buffer);
//return DownloadByPost(url, md5);
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
#region MD5转换
......
......@@ -174,7 +174,6 @@
//
// tsbSave
//
this.tsbSave.Enabled = false;
this.tsbSave.Image = global::Tools.Properties.Resources.保存;
this.tsbSave.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbSave.Name = "tsbSave";
......
......@@ -35,7 +35,21 @@ namespace Tools.UI
//事件:保存
private void tsbSave_Click(object sender, EventArgs e)
{
//清空数据源
this.dgvDetail.DataSource = null; //避免数据校验报错
//图片分离处理
Utils.SegImage(this._ds.Tables[0], "Photo");
//保存数据
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()
......@@ -44,6 +58,8 @@ namespace Tools.UI
this.InitDBHelper(link);
this.ModuleTableList = new List<TQuery> { new TQuery("AC_User", "SELECT * FROM dbo.AC_User") };
this._ds = this._db.GetData(this.ModuleTableList, true);
//图片分离兼容处理
SegConfig.Init(link);
Utils.FetchImage(this._ds);
}
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