用WCF上传文件 在 WCF没出现之前,
我一直使用用WebService来上传文件,我不知道别人为什么要这么做,为我们的文件服务器和网站后台和网站前台都不在同一个机器,操作人员觉得用FTP传文件太麻,我就做一个专门用来上传文件的
WebService,把这个WebService部署在文件服务器上,然在网站后台调用这个WebService,把网站后台页面上传上来的文件转化为字节流传给
WebSerce,然后WebService
把这个字节流保存文件到一个只允许静态页面的网站(静态网站可以防止些脚本木马)。 ebService来上传文件存在的问题是效率不高,而且不能传输大数据量的文件,当然你可以用W中的MTOM来传输大文件,有了WCF就好多了,通过使用WCF传递Stream对象来传递大数文件,但有一些限制: 1、只有BasicHttpBinding、NetTcpBinding 和 NetNamedPipeBinding 支持传送流数据。 2、流数据类型必须是可序列化的 Stream 或 MemoryStream。 3、传递时消息体(Message Body)中不能包含其他数据。 4、TransferMode的限制和MaxReceivedMessageSize的限制等。 下面具体实现:新建一个WCFService,接口文件的代码如下:
[ServiceContract]
public interface IUpLoadService
{
[OperationContract(Action = "UploadFile", IsOneWay = true)]
void UploadFile(FileUploadMessage request);
}