微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight 显示ftp图片



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

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

[csharp] view plain copy print ?
  1. [WebMethod(Description = "获取指定文件流", EnableSession = true)]  
  2.        public byte[] getFile()  
  3.        {  
  4.              
  5.            //FileInfo fileInfo=new FileInfo(file)  
  6.            string uri = "ftp://192.168.0.224/eca/001/0/356/png8-ask.jpg";  
  7.            FtpWebRequest reqFtp;  
  8.            reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));  
  9.            reqFtp.Credentials = new NetworkCredential("eca""mis5");  
  10.   
  11.            reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;  
  12.            reqFtp.UseBinary = true;  
  13.            FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse();  
  14.            Stream ftpStream = response.GetResponseStream();  
  15.            MemoryStream mStream = new MemoryStream();  
  16.            ftpStream.copyTo(mStream);  
  17.            mStream.Position = 0;  
  18.            int length = (int)mStream.Length;  
  19.            byte[] returnbyte = new byte[length];  
  20.            mStream.Read(returnbyte, 0, length);  
  21.   
  22.            mStream.Close();  
  23.            ftpStream.Close();  
  24.            response.Close();  
  25.              
  26.   
  27.            return returnbyte;  
  28.   
  29.        }  
 [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,length);

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

            return returnbyte;

        }

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

[csharp] view plain copy print ?
  1. private void client_getFileCompleted(object sender, getFileCompletedEventArgs e)  
  2.        {  
  3.            byte[] buffer = e.Result;  
  4.            System.IO.MemoryStream stream = new System.IO.MemoryStream(buffer);  
  5.            System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();  
  6.            bmp.SetSource(stream);  
  7.            Image image1 = new Image();  
  8.            image1.source = bmp;  
  9.            TabItem tb = new TabItem();  
  10.            tb.Header = "读取系统图片";  
  11.            tb.Content = image1;  
  12.            tb.IsSelected = true;  
  13.            tal.Items.Add(tb);  
  14.        }  
 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控件,运行结果如下:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐