【发布时间】:2012-01-16 04:07:25
【问题描述】:
我以前从未使用过 WCF,但我想创建一个简单的服务。我希望计算机从本地计算机上传文件。我的界面中有这个:
[OperationContract]
[WebInvoke(Method = "GET",UriTemplate = "/File")]
Stream GetFile();
在方法中,我只是这样做:
return new FileStream(@"c:\myfile.zip", FileMode.Open);
当我从客户端运行它时,Result 属性包含流本身。这很好,它可以工作,但我宁愿客户端从服务器本身访问文件,而不是复制整个文件。上传文件的 URL 是什么,以便客户端可以直接从服务器访问它?我以为是http://computername:port/something...(我相信这是一个 REST 服务?)
【问题讨论】:
-
如果客户端应该对文件内容做一些事情,那么无论如何它都需要复制它,无论你如何共享它(流,共享文件夹,http,ftp,...),不不是吗?
-
但是如果客户端不使用 WCF 服务怎么办?我假设他们仍然可以直接访问该文件?此外,上述方法不允许流式传输,因为它会先下载整个文件(例如音乐、视频等)
-
为了使用 WCF 流式传输文件,您可以将 transferMode 属性设置为“流式传输”,这将连续传输您的文件,而不是等待整个响应可用的缓冲模式。