其实我很费解你为什么不支持通过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); }
记得在配置文件中还需要配置下接受的大小,WCF默认接受消息的最大是65K,例如:
<bindings> <wsHttpBinding> <binding name="wsBindingOConfig" maxReceivedMessageSize="10000000" messageEncoding="Text"> <readerQuotas maxArrayLength="1000000" /> </binding> </wsHttpBinding> </bindings>
把 /Assets/ImageRes 映射到 IIS 虚拟目录。
能再详细一点么,我用的WPf,C#,没有iis.
@豌豆夹: 你提问题都不详细,你让我再详细点?你的 WCF 服务使用的是什么绑定?是 REST 风格的吗?
服务端从数据库取到图片路径后,就不要返回图片路径了,直接读取文件,用WCF返回byte[]。
然后在客户端调用WCF读取到byte[],再把byte[]转为图片。