我们一起学习WCF 第六篇文件传输
2018-06-18 04:49:57来源:未知 阅读 ()
前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进行服务器的监听。ok,现在来看看文件传输需要什么:第一需要传输的信息(文件名,流等)第二需要传输状态(是否传输成功,传输失败返回的信息)下面用图详细的表示下
第一步:先定义两个类
1 [MessageContract] 2 public class ResultMessage 3 { 4 [MessageHeader] 5 public string ErrorMessage { set; get; } 6 [MessageBodyMember] 7 public bool IsTrue { set; get; } 8 }
1 [MessageContract] 2 public class StreamMessage 3 { 4 [MessageHeader] 5 public string FileName { set; get; } 6 [MessageBodyMember] 7 public Stream TransferStream { set; get; } 8 }
第二步:定义契约 ResultMessage UploadFile(StreamMessage message);
第三步:我们来实现这个契约
1:创建文件保存的路径(核心源码)
string uploadPath = @"E:\WCF\Service\";
string savePath = @"File\";
uploadPath = uploadPath + savePath;
2:接收流并保存在指定文件下
3:显示传输状态
using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
message.TransferStream.CopyTo(fileStream);
fileStream.Flush();
fileStream.Close();
resultInfo.IsTrue = true;
Console.WriteLine("成功接收客户端传来文件{0} {1}", message.FileName,DateTime.Now.ToString());
}
第四步:实现服务端
其他和前几篇保持不变但是要修改BasicHttpBinding如下
BasicHttpBinding binding = new BasicHttpBinding();
//开启流传输模式
binding.TransferMode = TransferMode.StreamedRequest;
binding.MaxBufferSize = 1024;
//设置传输最大的范围
binding.MaxReceivedMessageSize = 1024*1024*1024;
第五步:开启服务客户端引用服务
1:选择上传文件(以下为核心代码)
OpenFileDialog dfl = new OpenFileDialog();
dfl.Multiselect = true;//多选
dfl.Filter = "所有文件|*.*";//筛选文件类型文本文件(*.txt)|*.txt|所有文件(*.*)|*.*
2:进行上传(以下为核心代码)
FileStream fileStream = new FileStream(lbl_show.Text, FileMode.Open, FileAccess.Read)//文件转换成流
WinClient.IStream clientStream = new StreamClient();
WinClient.StreamMessage SMA = new WinClient.StreamMessage();
SMA.TransferStream = fileStream;
WinClient.ResultMessage message = await clientStream.UploadFileAsync(SMA);//调用服务端进行上传
第六步:运行客户端查看效果
服务端:
客户端:
不懂的可以参考源码或者留言。
源码下载
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:16进制字符和图片之间相互转换
下一篇:常用的WebService一览表
- 学习Java 8 Stream Api (4) - Stream 终端操作之 collect 2020-06-11
- java学习之第一天 2020-06-11
- Java学习之第二天 2020-06-11
- Spring WebFlux 学习笔记 - (一) 前传:学习Java 8 Stream Ap 2020-06-11
- Linux简单命令的学习 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash