silverlight 显示ftp图片

silverlight的image控件只支持从项目任何文件夹和网页(http:\\**)的方式加载图片,这种方式比较简单。那么如何从ftp读取图片并显示呢?(本人刚从extjs中转到silverlight所以思路一直停留在image控件应该能直接加载呀)

主要采用的方式是web服务的方法通过FtpWebRequest请求到文件然后以byte的方式传送,当然你也可以使用WCF服务,都可以,建好服务以后,在服务端,添加如下代码:

 [WebMethod(Description = "获取指定文件流", EnableSession = true)]
        public byte[] getFile()
        {
            
            //FileInfo fileInfo=new FileInfo(file)
            string uri = "ftp://192.168.0.224/eca/001/0/356/png8-ask.jpg";
            FtpWebRequest reqFtp;
            reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
            reqFtp.Credentials = new NetworkCredential("eca", "mis5");

            reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;
            reqFtp.UseBinary = true;
            FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse();
            Stream ftpStream = response.GetResponseStream();
            MemoryStream mStream = new MemoryStream();
            ftpStream.CopyTo(mStream);
            mStream.Position = 0;
            int length = (int)mStream.Length;
            byte[] returnbyte = new byte[length];
            mStream.Read(returnbyte, 0, length);

            mStream.Close();
            ftpStream.Close();
            response.Close();
            

            return returnbyte;

        }

然后就是从前端调用了,代码如下:

 private void client_getFileCompleted(object sender, getFileCompletedEventArgs e)
        {
            byte[] buffer = e.Result;
            System.IO.MemoryStream stream = new System.IO.MemoryStream(buffer);
            System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
            bmp.SetSource(stream);
            Image image1 = new Image();
            image1.Source = bmp;
            TabItem tb = new TabItem();
            tb.Header = "读取系统图片";
            tb.Content = image1;
            tb.IsSelected = true;
            tal.Items.Add(tb);
        }
其中tal是一个table控件,运行结果如下:






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值