WPF上传图片到服务器文件夹
1.前端用ListBox加载显示多张图片
1 <ListBox Name="lbHeadImages" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
2 <ListBox.ItemTemplate>
3 <DataTemplate>
4 <Grid >
5 <Rectangle Fill="#fff">
6 <Rectangle.Effect>
7 <DropShadowEffect Opacity="0.5" ShadowDepth="0"/>
8 </Rectangle.Effect>
9 </Rectangle>
10 <StackPanel Margin="2">
11 <Image Stretch="UniformToFill" Width="100" Height="120" VerticalAlignment="Center" HorizontalAlignment="Center"
12 Source="{Binding Image,Mode=TwoWay,NotifyOnSourceUpdated=True}"
13 MouseLeftButtonDown="Image_MouseLeftButtonDown"></Image>
14 </StackPanel>
15 </Grid>
16 </DataTemplate>
17 </ListBox.ItemTemplate>
18 <ListBox.ItemsPanel>
19 <ItemsPanelTemplate>
20 <WrapPanel Name="wrapPanel" HorizontalAlignment="Stretch" />
21 <!--<UniformGrid Columns="6"></UniformGrid>-->
22 </ItemsPanelTemplate>
23 </ListBox.ItemsPanel>
24 </ListBox>
2.客户端——选择图片(可选择多张),前台加载显示
1 private void btnSelectBehindImage_Click(object sender, RoutedEventArgs e)
2 {
3 OpenFileDialog openFileDialog = new OpenFileDialog();
4 openFileDialog.Multiselect = true;
5 openFileDialog.Filter = "All Image Files|*.jpg;*.png";
6 if ((bool)openFileDialog.ShowDialog()) {
7 if (openFileDialog.OpenFile() != null) {
8 behindImages.Clear();
9 string[] fileNames = openFileDialog.FileNames;
10 List<FinishProRptCheckVM.ImageRow> items = new List<FinishProRptCheckVM.ImageRow>();
11 for (int i = 0; i < fileNames.Count(); i ++) {
12 string filePath = fileNames[i];
13 var size = new FileInfo(filePath).Length / 1024 /1024; //获取文件大小(M)
14 if (size >= 1) { MessageBox.Show("上传图片大小不能超过1M!");return; }
15 byte[] bytes = File.ReadAllBytes(filePath);
16 behindImages.Add(bytes);
17
18 FinishProRptCheckVM.ImageRow row = new FinishProRptCheckVM.ImageRow() { Image = new BitmapImage(new Uri(filePath))};
19 items.Add(row);
20 }
21 lbBehindImages.ItemsSource = items;
22 }
23 }
24 }
3.客户端上传图片
1 private bool UploadImage(string bill_no)
2 {
3 //上传服务器文件夹
4 string url = "/api/qc/iqc/experimentrptservice/uploadfile";
5 var result = Framework.PostData(url, lstBytes1, behindImages, bill_no);
6 if (result.success && result.data)
7 {
8 return true;
9 }
10 else
11 {
12 return false;
13 }
14 }
4.服务端保存图片到服务器文件夹
1 public static object UploadFile(List<byte[]> headerPhoto,List<byte[]> behindPhoto,string billNo) {
2 try
3 {
4 //获取保存文件的文件夹路径
5 string filePath = "D:\\image\\";
6 if (!System.IO.Directory.Exists(filePath))//文件夹不存在创建文件夹
7 {
8 Directory.CreateDirectory(filePath);
9 }
10 else {//文件夹存在,找对应实验是否存在上传过的图片,存在则删除
11 string[] strDataFiles = Directory.GetFiles(filePath);
12 var imageFiles = from a in strDataFiles where a.Contains(billNo) && (a.EndsWith(".png") || a.EndsWith(".jpg")) select a;
13 foreach (string imagePath in imageFiles) {
14 File.Delete(imagePath);
15 }
16 }
17 //保存实验前图片
18 for (int i = 0; i < headerPhoto.Count; i++)//遍历二进制的数组的数组
19 {
20 string strRiQiWenJian = "实验前" + i.ToString() + "_" + billNo + ".png";
21 string strBaoCunLuJing = "D:\\image\\" + strRiQiWenJian;
22 FileInfo fi = new FileInfo(strBaoCunLuJing);
23 FileStream fs;
24 fs = fi.OpenWrite();
25 fs.Write(headerPhoto[i], 0, headerPhoto[i].Length);
26 fs.Flush();
27 fs.Close();
28 }
29 return true;
30 }
31 catch
32 {
33 return false;
34 }
35 }
5.客户端,进入界面,初始化从服务器加载对应图片显示
1 public void LoadImages (){
2 string url = "/api/qc/iqc/experimentrptservice/loadimages?bill_no=" + ParamModel.BILL_NO;
3 var result = Framework.GetData(url);
4 if (result.success){
5 lstBytes1 = JsonConvert.DeserializeObject<List<byte[]>>(result.data.HeaderBytePic.ToString());
6 behindImages = JsonConvert.DeserializeObject<List<byte[]>>(result.data.BehindBytePic.ToString());
7
8 //加载实验前图片
9 List<FinishProRptCheckVM.ImageRow> headerImages = new List<FinishProRptCheckVM.ImageRow>();
10 for (int i = 0; i < lstBytes1.Count;i++) {
11 BitmapImage img = new BitmapImage();
12 img.BeginInit();
13 img.StreamSource = new MemoryStream(lstBytes1[i]);
14 img.EndInit();
15 //img.Freeze();
16 FinishProRptCheckVM.ImageRow row = new FinishProRptCheckVM.ImageRow() { Image = img };
17 headerImages.Add(row);
18 }
19 lbHeadImages.ItemsSource = headerImages;
20 }
21 }
6.效果图

WPF上传图片到服务器文件夹的更多相关文章
- 设置linux服务器文件夹权限
最近搞的网站一上传图片,就报500错误.经排查是服务器文件夹权限设置问题. 使用命令: chmod o+rwx avatar 即可改变文件夹权限设置.
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...
- 关于 百度 Ueditor 上传图片时 打开文件夹的延迟问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/image ...
- java通过sftp对linux服务器文件夹进行操作
本文主要讲sftp对linux服务器的文件和文件夹进行操作,windows server 服务器不支持. package com.lx.ftp; import java.io.File; import ...
- 在MVC3中修改KindEditor实现上传图片到指定文件夹
KindEditor编辑器默认上传的图片文件夹,是根据系统时间自动生成的,图片是自动上传到这些文件夹里面,无法选择.如果要上传图片到指定文件夹,像相册一样管理图片,则需要扩展KindEditor编辑器 ...
- 百度编辑器 Ueditor 上传图片时打开文件夹的延迟问题,点击上传图片弹窗打开慢问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/ima ...
- 关于 百度 Ueditor (在chrome浏览器) 上传图片时 打开文件夹的延迟问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/image ...
- .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可。
.net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可.
- WPF:自定义Metro样式文件夹选择对话框FolderBrowserDialog
1.前言 WPF并没有文件选择对话框,要用也就只有使用Winform版的控件.至今我也没有寻找到一个WPF版本的文件选择对话框. 可能是我眼浊,如果各位知道有功能比较健全的WPF版文件选择对话框.文件 ...
随机推荐
- 关于React Native常用技巧
Doctor命令检查所需环境 @2019年11月18日,React Native v新增了一个环境检查和诊断命令行,可以帮助新手修复环境,输出环境依赖报告. 先建好的一个React Native项目, ...
- LeetCode解题记录(贪心算法)(一)
1. 前言 目前得到一本不错的算法书籍,页数不多,挺符合我的需要,于是正好借这个机会来好好的系统的刷一下算法题,一来呢,是可以给部分同学提供解题思路,和一些自己的思考,二来呢,我也可以在需要复习的时候 ...
- 不藏了,这些Java反射用法总结都告诉你们
摘要:Java反射是一种非常强大的机制,它可以在同一个系统中去检测内部的类的字段.方法和构造函数.它非常多的Java框架中,都大量应用了反射技术,如Hibernate和Spring.可以说,反射机制的 ...
- AcWing 341. 最优贸易
C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有一条道路直接相连. 这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的 ...
- php 基于redis使用令牌桶算法 计数器 漏桶算法 实现流量控制
通常在高并发和大流量的情况下,一般限流是必须的.为了保证服务器正常的压力.那我们就聊一下几种限流的算法. 计数器计数器是一种最常用的一种方法,在一段时间间隔内,处理请求的数量固定的,超的就不做处理. ...
- 用swoole实现异步任务队列
应用场景如下: 假如要发100封邮件,for循环100遍,这种方法显然是不可取的. 在一些比较繁杂的业务里,我们很可能有超过1万的邮件要群发.那我们怎么处理这个延迟的问题? 答案就是用异步.把&quo ...
- Mysql学生课程表SQL面试集合
现有如下2个表,根据要求写出SQL语句. student表:编号(sid),姓名(sname),性别(sex) course表:编号(sid),科目(subject),成绩(score) 问题1:查 ...
- YAOI Round #1 题解
前言 比赛网址:http://47.110.12.131:9016/contest/3 总体来说,这次比赛是有一定区分度的, \(\text{ACM}\) 赛制也挺有意思的. 题解 A. 云之彼端,约 ...
- CTF-OldDriver-writeup
题目信息: 有个年轻人得到了一份密文,身为老司机的你能帮他看看么? 附件:enc.txt [{"c": 73660675747411714617220651332429160804 ...
- SHELL 变量一
SHELL变量分为三类:本地变量.环境变量和位置参数 变量存在三种基本结构:变量名.操作符(个人定义).变量值 比如:var=blue 变量名:var 操作符:= 变量值:blue 变量的设置规则: ...