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版文件选择对话框.文件 ...
随机推荐
- 解决WebStorm开发vue提示Module is not installed、Unresolved variable or type
WebStorme2021.1版本: Setting->Languages->JavaScript->Webpack由原先的disable选为Automatically即可(右下角弹 ...
- ansible 常用命令
ansible 命令集 #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行 /usr/bin/ansible #Ansible 模块功能查看工具 /usr/bin/ansible-d ...
- python log装饰器
def log(func): #将原函数对象的指定属性复制给包装函数对象, 默认有 module.name.doc,或者通过参数选择 @functools.wraps(func) def wrappe ...
- go logrus实战应用
简单记录一下logrus实战应用,详细了解可以移步官网,这是直接使用 上代码: logrus整个项目应用封装 package log import ( "fmt" "gi ...
- java基础---数组的排序算法(3)
一.排序的基本概念 排序:将一个数据元素集合或序列重新排列成按一个数据元素某个数据项值有序的序列 稳定排序:排序前和排序后相同元素的位置关系与初始序列位置一致(针对重复元素来说,相对位置不变) 不稳定 ...
- 「CF997E」 Good Subsegments
CF997E Good Subsegments 传送门 和 CF526F 差不多,只不过这道题是对多个子区间进行询问. 据说有一个叫析合树的东西可以在线做,不过有时间再说吧. 考虑离线询问,将每个询问 ...
- 基于Ryu的流量采集代码实现
1 from __future__ import division 2 import time 3 import math 4 import xlwt 5 from ryu.controller im ...
- Vue权限路由实现总结
前言 年前完工了做了半年的铁路后台管理系统,系统整体业务比较复杂,这也是我到公司从 0 到 1 的 一个完整系统实践,做这个系统过程中踩了不少坑,也学到了很多. 做完这个系统没多久,紧接着又一个系统来 ...
- C语言:for语句原理及具体执行过程
#include <stdio.h> int main() { int i,s=0; for(i=1;;i*=2) { s=s+i; if(i%3==0) break; i=i+2; pr ...
- python 构造函数 析构函数
#构造函数是在对象被创建是自动调用的方法,用来完成初始化操作class Test(object): def __init__(self, name): self.name = name print(' ...