WPF新增上传图片

开发工具与关键技术:Visual Studio
撰写时间:2019年06月28日

在这里我要介绍一下WPF的新增上传图片,它与之前MVC的不太一样,但也只是代码不一样,逻辑和思路还是类似的。
一、先在数据库中写新增的存储过程,这里的新增代码跟以前的新增存储过程一样,新增什么写什么没什么特别的。当然,首先还是要判断需要新增的数据在表中存不存在,存在的不新增,再写需要新增的字段。数据库的存储过程的代码如下:
在这里插入图片描述
二、再回到服务端service里编写代码,直接在新增里面获取到数据库的存储过程的代码,图片亦是如此。但是,在新增的时候,我们还需要声明变量来接收图片,所以我们要写两个方法。(注意:这里的图片是byte[]类型)。在服务器service配置好引用,客户端client直接调用

string strPatientPhotos = WenJianLiuZhuanHuanLuJing(bytepicture);

我们需要把文件流转换为路径

 private string WenJianLiuZhuanHuanLuJing(byte[][] byteTuPian)

第一步:我们需要判断有没有文件image,如果没有,我们需要创建一个名叫image的文件夹装图片,之后图片的名称需要拼接日期,再遍历二进制的数组。
第二步:如果已经有了文件夹,那么直接返回文件名字
服务器代码如下:

 string strWenJianQianZui = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() +DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() +DateTime.Now.Millisecond.ToString();
  string strWenJianName = "";
  for (int i = 0; i < byteTuPian.Length; i++)
     {
      string strRiQiWenJian = strWenJianQianZui + i.ToString() + ".png";
      strBaoCunLuJing = strPath + strRiQiWenJian;
      FileInfo fi = new FileInfo(strBaoCunLuJing);
      FileStream fs;
      fs = fi.OpenWrite();
      fs.Write(byteTuPian[i], 0, byteTuPian[i].Length);
      fs.Close();
      strWenJianName = strRiQiWenJian;
      }
return strWenJianName;

四、最后在客户端client添加服务器service的引用。在页面中,我们有一个浏览图片的按钮,点击可以去文件夹选择图片,选择图片的时候,我们还需要给它筛选文件类型ALL Image Files|.,因为是选择文件,所以我们需要引用IO流,打开只读流,获取文件的流长度,声明一个数组,用数组读取字节数,之后绑定图片`

OpenFileDialog ofdWenJian = new OpenFileDialog();
ofdWenJian.Filter = "ALL Image Files|*.*";
if ((bool)ofdWenJian.ShowDialog())
{
   if ((phpto = ofdWenJian.OpenFile()) != null)
   {                                          
        length = (int)phpto.Length;
        byte[] bytes = new byte[length];
        phpto.Read(bytes, 0, length);
        lstBytes.Add(bytes);
        BitmapImage images = new BitmapImage(new Uri(ofdWenJian.FileName));
        img_photo.Source = images;
        txt_Load.Text = ofdWenJian.FileName;
    }
}

五、保存新增的图片,提取刚刚选择的图片

//提取上传的文件
        byte[][] bytepicture = new byte[lstBytes.Count][];
        for (int i = 0; i < lstBytes.Count; i++)
        {
            bytepicture[i] = lstBytes[i];//提取图片
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值