WCF实现上传图片功能

WCF实现上传图片功能,第1张

功能介绍         主要是使用WCF框架实现从客户端上传到服务端并在服务端显示的基本功能         一 首先创建两Windows窗体应用程序 WinFormClient (客户端 发送端)和 WinFormReceiver (接收端)        如图设计FormClient(发送端窗体)的界面 上边是一个panel容器中添加了一个TextBox和 两个Button 下边是一个PictureBox控件(用于浏览上传之前的)

然后添加浏览按钮下的后台代码 实现客户端浏览的功能         View Code        string fileName = ;//定义一个全局变量         //浏览选择上传内容        private void btnBrowser_Click(object sender EventArgs e)        {        //string fileName = ;//定义一个字段用于获取上传的文件名         OpenFileDialog openFileDialog = new OpenFileDialog() //创建一个OpenFileDialog对象专门用于打开文件        if (openFileDialog ShowDialog() == DialogResult OK)//打开的文件对话框如果选择了OK按钮(确定) 则为真 执行大括号中的内容        {        fileName = openFileDialog FileName;        txtPicName Text = fileName;//在textBox中显示文件名        pictureBox Load(fileName) //使该在客户端pictuBox中显示        }        else        return;//未选中文件则返回         }        将WinFomClient设为启动项目 运行        当你选择后 该会显示在发送端的窗体中 供发送者浏览 如需更改上传可重新选取 该将会被覆盖掉 (上传功能将在下文实现)        FormReceiver接收端的窗体只需添加一个PictureBox控件 用于显示客户端上传的    

    二 在解决方案中添加两个类库 ITransferPic(接口) TransferPic(继承接口) 一个控制台应用程序 TransferPicHost(宿主程序)         该实例采用的是 自身托管宿主 并非 IIS宿主         ITransferPic        ( ) 添加引用 using System ServiceModel;   using System IO;        ( ) 创建一个 ITransferPicService 接口        View Code        [ServiceContract]        public interface ITransferPicService        {        [OperationContract]// *** 作契约        Stream GetPic()         [OperationContract]        void SendPic(Stream transferPic)         }        TransferPic        ( ) 添加引用 using ITransferPic;  using System IO;        ( ) 创建一个 TransferPicService 类 继承接口 ITransferPicService 并实现该接口         View Code        public class TransferPicService : ITransferPicService        {        public static Stream PicSource = new MemoryStream()         /// <summary>        /// 从服务端下载到本地 (上传和下载都是拷贝的过程)        /// </summary>        /// <returns></returns>        public Stream GetPic()        {        MemoryStream ms = new MemoryStream()         PicSource Position = ;//指明从第 位开始拷贝        PicSource CopyTo(ms) //服务端将客户端的Stream复制一份        ms Position = ;//注意如果缺少该条代码接收端将无法显示上传        return ms;//然后在返回客户端         }        /// <summary>        /// 从客户端上传到服务端(将客户端的Stream拷贝给服务端的Stream)        /// </summary>        /// <param name= transferPic ></param>        public void SendPic(Stream transferPic)        {        PicSource Position = ;        transferPic CopyTo(PicSource)         }        }        TransferPicHose        自身托管宿主 利用WCF提供的ServiceHost<T>提供的Open()和Close()方法 可以便于开发者在控制台应用程序 Windows应用程序乃至于ASP NET应用程序中托管服务 不管自宿主的环境是何种应用程序 实质上托管服务的方式都是一致的 如该实例中用到的代码部分         添加引用         using System ServiceModel;        using ITransferPic;        using System ServiceModel Description;        View Code        class Program        {        static void Main(string[] args)        {        NetTcpBinding bind = new NetTcpBinding()         bind MaxBufferSize = ;        bind TransferMode = TransferMode Streamed;        bind MaxReceivedMessageSize = ;        bind Security Mode = SecurityMode None;        //超出using 范围程序会自动释放        using (ServiceHost host = new ServiceHost(typeof(TransferPic TransferPicService)))        {        host AddServiceEndpoint(typeof(ITransferPicService) bind net tcp://localhost: /transferPic ) //该地址为宿主地址 和客户端接收端地址保持一致

        if (host Description Behaviors Find<ServiceMetadataBehavior>() == null)        {        ServiceMetadataBehavior behavior = new ServiceMetadataBehavior()         behavior >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13453898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存