国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

我們一起學(xué)習(xí)WCF第六篇文件傳輸

2019-11-14 15:55:33
字體:
供稿:網(wǎng)友

  前言:文件的輸出我們并不陌生,但是今天我寫的是用wcf模式進(jìn)行文件傳輸,我覺得一大好處就是能進(jìn)行服務(wù)器的監(jiān)聽。ok,現(xiàn)在來看看文件傳輸需要什么:第一需要傳輸?shù)男畔ⅲㄎ募?,流等)第二需要傳輸狀態(tài)(是否傳輸成功,傳輸失敗返回的信息)下面用圖詳細(xì)的表示下

第一步:先定義兩個(gè)類

1  [MessageContract]2     public class ResultMessage3     {4         [MessageHeader]5         public string ErrorMessage { set; get; }6         [MessageBodyMember]7         public bool IsTrue { set; get; }8     }
返回結(jié)果類
1        [MessageContract]2        public class StreamMessage3        {4            [MessageHeader]5            public string FileName { set; get; }6            [MessageBodyMember]7            public Stream TransferStream { set; get; }8        }  
傳輸類

第二步:定義契約 ResultMessage UploadFile(StreamMessage message);

第三步:我們來實(shí)現(xiàn)這個(gè)契約

1:創(chuàng)建文件保存的路徑(核心源碼

string uploadPath = @"E:/WCF/Service/";
string savePath = @"File/";

uploadPath = uploadPath + savePath;

2:接收流并保存在指定文件下

3:顯示傳輸狀態(tài)

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());
}

第四步:實(shí)現(xiàn)服務(wù)端

其他和前幾篇保持不變但是要修改BasicHttpBinding如下

BasicHttpBinding binding = new BasicHttpBinding();
//開啟流傳輸模式
binding.TransferMode = TransferMode.StreamedRequest;
binding.MaxBufferSize = 1024;
//設(shè)置傳輸最大的范圍
binding.MaxReceivedMessageSize = 1024*1024*1024;

第五步:開啟服務(wù)客戶端引用服務(wù)

1:選擇上傳文件(以下為核心代碼)

OpenFileDialog dfl = new OpenFileDialog();
dfl.Multiselect = true;//多選
dfl.Filter = "所有文件|*.*";//篩選文件類型文本文件(*.txt)|*.txt|所有文件(*.*)|*.*

2:進(jìn)行上傳(以下為核心代碼)

FileStream fileStream = new FileStream(lbl_show.Text, FileMode.Open, FileAccess.Read)//文件轉(zhuǎn)換成流

WinClient.IStream clientStream = new StreamClient();

WinClient.StreamMessage SMA = new WinClient.StreamMessage();

SMA.TransferStream = fileStream;

WinClient.ResultMessage message = await clientStream.UploadFileAsync(SMA);//調(diào)用服務(wù)端進(jìn)行上傳

第六步:運(yùn)行客戶端查看效果

服務(wù)端:

客戶端:

不懂的可以參考源碼或者留言。

源碼下載

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汕尾市| 措美县| 临朐县| 任丘市| 泾川县| 平果县| 马公市| 平顶山市| 石首市| 泽库县| 浮山县| 青河县| 垣曲县| 滦南县| 伽师县| 卢龙县| 华宁县| 利津县| 布尔津县| 江北区| 峨山| 遂昌县| 来凤县| 同德县| 阿合奇县| 原平市| 抚顺县| 衡阳县| 旌德县| 淮安市| 张家港市| 星子县| 乐平市| 承德市| 广平县| 建湖县| 永城市| 建始县| 冷水江市| 镇坪县| 克拉玛依市|