Winform快速开发框架之存储图片资源解决方案|C/S框架网
作者:C/S框架网  发布日期:2019/01/30 00:15:20
  Winform快速开发框架之存储图片资源解决方案|C/S框架网

Winform快速开发框架之存储图片资源解决方案|C/S框架网

我们在开发大型软件系统时,经常会遇到存储图片资源的需求,终端用户需要提交本地图片到应用服务器或数据库服务器。有些用户将图片资源存储在当前业务表(添加图片字段,与业务数据同级提交),这种做法将给软件系统带来很大麻烦,如:查询时系统响应慢、程序固化、不利于维护和扩展。

本文作者曾使用以下几种图片存储策略:

1. 存在独立的资料表(如:dt_Image),与系统结合紧密度最高,实现最简单。
2. 访问IIS服务器,使用URL方式访问图片,需要部署IIS服务器,客户端要能访问IIS服务器。
3. 本机缓存机制+在线单个图片动态获取。
4. FTP服务器,阿里OSS存储等。

使用独立图片表存储图片资源有以下优势:

1.图片资源与业务数据完全分离。
2.图片资源可以跨服务器部署、可扩展支持其它图片存储策略。
3.与系统结合紧密度最高,实现简单,代码复用。
4.易维护性。



本文将阐述在VS开发环境下使用ADO.NET组件+标准三层逻辑架构独立存储图片解决方案,与表格中展示图片资源略有不同,图片组件是VS自带的PictureEdit,在界面中固定图片尺寸和组件数量,而不是表格中ColumnEdit绑定RepositoryItemPictureEdit组件。

本文示例采用继承frmBaseDataDictionary基类的数据字段窗体,图片表作为当前记录的明细表。


界面效果图:


贴图图片


部分源码参考:

C# Code:

//数据采集-创建用于保存的数据集
private DataSet CreateSaveData()
{
   _BLLInstance.DataBinderRow.EndEdit();
   
   DataSet ds = new DataSet();
   
   //收集主表
   ds.Tables.Add(_BLLInstance.DataBinder.Copy());
   
   //收集图片明细表
   DataTable dtImg = _BLLIMG.GetImageDataRow("-");
   AddImage(dtImg, pic1);
   AddImage(dtImg, pic2);
   AddImage(dtImg, pic3);
   
   if (dtImg.Rows.Count > 0)
   ds.Tables.Add(dtImg.Copy());
   
   return ds;
}

//来源:C/S框架网(www.csframework.com) QQ:23404761


贴图图片



C# Code:

//从剪贴板粘贴图片
private void menuPOP_Paster_Click(object sender, EventArgs e)
{
   if (_CurrentImage != null)
   {
      Image img = Clipboard.GetImage();
      if (img != null) this.SetImage(_CurrentImage, img);
   }
}

//来源:C/S框架网(www.csframework.com) QQ:23404761



C# Code:

//删除图片
private void menuPOP_Del_Click(object sender, EventArgs e)
{
   if (_CurrentImage == null || _CurrentImage.Tag == null) return;
   
   if (Msg.AskQuestion("确定要删除图片吗?"))
   {
      DataRow R = _CurrentImage.Tag as DataRow;
      
      //直接从后台删除
      if (R.RowState != DataRowState.Added)
      {
         string ImgID = R[dt_Image.ImgID].ToString();
         if (_BLLIMG.Delete(ImgID))
         {
            _CurrentImage.Tag = null;
            _CurrentImage.Image = null;
            
            Msg.ShowInformation("成功删除图片!");
         }
         else
         Msg.Warning("删除图片失败!");
      }
   }
}

//来源:C/S框架网(www.csframework.com) QQ:23404761




相关文档:Winform+DevExpress框架之独立图片存储解决方案|C/S框架网






VIP用户下载源码(源码适用CSFrameworkV4.x企业版,V5.x旗舰版)



点击下载附件 (VIP会员下载) 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇