首页新闻找找看学习计划

C#,wpf,从服务端下载图片。

0
悬赏园豆:50 [已解决问题] 解决于 2015-07-24 15:04

我用wpf,写了一个客户端,写了一个wcf服务端,wcf服务端从数据库得到图片的路径:/Assets/ImageRes/star.png,而这个图片是放在wcf服务端的项目的更目录,我怎么样才可以通过wpf客户端(http:),得到这个图片然后显示出来。

豌豆夹的主页 豌豆夹 | 初学一级 | 园豆:6
提问于:2015-07-24 09:55
< >
分享
最佳答案
1

其实我很费解你为什么不支持通过WCF来提供下载图片的服务接口呢,然后客户端只要接收保存为本地文件就可以了,例如:

=> 仅仅演示说明,实际实验请修改下相关代码

public
class IMAGEData{ [DataMember] public string Id{get;set;} [DataMember] public string Name{get;set;} [DataMember] public string Path{get;set;} //存储图片的有效路径 [DataMember] public byte[] Data{ge;set;} //图片数据 } //server public class FileDownloadService : IFileDownloadServive { // 服务接口,图片下载 IMAGEData IFileDownloadServive.ImageDownload() { //这里假设我们初始化了有效图片(Path)路径和其他字段(Id,Name) IMAGEData dImage = new IMAGEData(); dImage.Data = File.ReadAllBytes(dImage.Path); return dImage; } } //+ 写好服务接口,后面我们需要配置下服务配置问津,主要是配置binding <bindings> <wsHttpBinding> <binding name="wsBindingOConfig" messageEncoding="Text" /> </wsHttpBinding </binding // WPF 客户端 public void call_download_image(void) { //s1:call service client.IMAGEData imagedata = client.ImageDownload(); //写入本地客户端路径 File.WriteAllBytes( localPath , IMAGEData.data); }

 

收获园豆:50
visonme | 小虾三级 |园豆:1674 | 2015-07-24 10:36

记得在配置文件中还需要配置下接受的大小,WCF默认接受消息的最大是65K,例如:

<bindings>
   <wsHttpBinding>
          <binding name="wsBindingOConfig"
                                       maxReceivedMessageSize="10000000"
                                       messageEncoding="Text">
                    <readerQuotas maxArrayLength="1000000" />
          </binding>
 </wsHttpBinding>
</bindings>

 

visonme | 园豆:1674 (小虾三级) | 2015-07-24 10:39
其他回答(2)
0

把 /Assets/ImageRes 映射到 IIS 虚拟目录。

Launcher | 园豆:45030 (高人七级) | 2015-07-24 09:58

能再详细一点么,我用的WPf,C#,没有iis.

支持(0) 反对(0) 豌豆夹 | 园豆:6 (初学一级) | 2015-07-24 10:11

@豌豆夹: 你提问题都不详细,你让我再详细点?你的 WCF 服务使用的是什么绑定?是 REST 风格的吗?

支持(0) 反对(0) Launcher | 园豆:45030 (高人七级) | 2015-07-24 10:19
0

服务端从数据库取到图片路径后,就不要返回图片路径了,直接读取文件,用WCF返回byte[]。

然后在客户端调用WCF读取到byte[],再把byte[]转为图片。

liqipeng | 园豆:1160 (小虾三级) | 2015-07-24 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册