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版文件选择对话框.文件 ...
随机推荐
- 最强阿里巴巴历年经典面试题汇总:C++研发岗
(1).B树.存储模型 (2).字典树构造及其优化与应用 (3).持久化数据结构,序列化与反序列化时机(4).在无序数组中找最大的K个数? (4).大规模文本文件,全是单词,求前10词频的单词 (5) ...
- jquery combo.select. 下拉选择插件
演示地址:http://www.dowebok.com/demo/179/index5.html 引入js.css 即可使用,效果如图所示: 这个插件的好处是可以在输入框里面输入数据 自动检索内容. ...
- drf-路由和认证
目录 一.路由Routers SimpleRouter DefaultRouter action的使用 二.认证 认证的写法 认证源码分析 认证组件的使用 一.路由Routers 在 Rest Fra ...
- php 经典的算法题-偷苹果
有5个人偷了一堆苹果,准备在第二天分赃.晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了.没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的 ...
- 14个Java技术网站,程序员必备!
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员.我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 程序员都是无师自通?这就有点胡 ...
- rz上传文件报错:rpm Read Signature failed: sigh blob(1268): BAD, read returned 0
上传文件报错: [root@www localdisk]# rpm -ivh cobbler* error: cobbler-2.8.4-4.el7.x86_64.rpm: rpm Read Si ...
- echarts堆叠柱状图在最上面的柱子显示总和
需求 柱子需设置barMinHeight 在堆叠柱状图的最上面显示当前堆叠的总和 直接上代码吧 需要注意:设置barMinHeight时为了让0不显示,只能将0设置为null; 设置为null的柱子l ...
- python使用笔记11--时间模块
1.时间模块常用方法 1 import time,datetime 2 #格式化好的时间2020-05-16 18:30:52 3 #时间戳1589616753 从unix元年(计算机发明的时间)到现 ...
- C语言:#error命令,阻止程序编译
#error 指令用于在编译期间产生错误信息,并阻止程序的编译,其形式如下: #error error_message 例如,我们的程序针对 Linux 编写,不保证兼容 Windows,那么可以这样 ...
- python根据窗口标题找句柄,将窗口前置活动
import time, threading, copy import win32api, win32con import win32gui import win32gui def zhaojb(aa ...