- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
手把手教你实现WCF上传文件
手把手教你实现WCF上传文件
在优酷上我想上传一段视频,你有想过会台是怎么实现的吗?这里我就为大家分析一下关于利用WCF上传文件,在WCF没出现之前,我一直使用用WebService来上传文件,我不知道别人为什么要这么做,因为我们的文件服务器和网站后台和网站前台都不在同一个机器,操作人员觉得用FTP传文件太麻烦,我就做一个专门用来上传文件的WebService,把这个WebService部署在文件服务器上,然后在网站后台调用这个WebService,把网站后台页面上传上来的文件转化为字节流传给WebService,然后WebService把这个字节流保存文件到一个只允许静态页面的网站(静态网站可以防止一些脚本木马)。
WebService来上传文件存在的问题是效率不高,而且不能传输大数据量的文件,当然你可以用Wse中的MTOM来传输大文件,有了WCF就好多了,通过使用WCF传递Stream对象来传递大数据文件,但有一些限制:只有BasicHttpBinding、NetTcpBinding和NetNamedPipeBinding支持传送流数据。流数据类型必须是可序列化的Stream或MemoryStream。传递时消息体(MessageBody)中不能包含其他数据。TransferMode的限制和MaxReceivedMessageSize的限制等。
下面具体实现:新建一个WCFService,接口文件的代码如下:
[ServiceContract] ?
publicinterfaceIUpLoadService ?
{ ?
[OperationContract(Action=UploadFile,IsOneWay=true)] ?
voidUploadFile(FileUploadMessagerequest); ?
} ?
[MessageContract] ?
publicclassFileUploadMessage ?
{ ?
[MessageHeader(MustUnderstand=true)] ?
publicstringSavePath; ?
[MessageHeader(MustUnderstand=true)] ?
publicstringFileName; ?
[MessageBodyMember(Order=1)] ?
publicStreamFileData; ?
}?
定义FileUploadMessage类的目的是因为第三个限制,要不然文件名和存放路径就没办法传递给WCF了,根据第二个限制,文件数据是用System.IO.Stream来传递的接口方法只有一个,就是WCF上传文件,注意方法参数是FileUploadMessage接口实现类文件的代码如下:
publicclassUpLoadService:IUpLoadService ?
{ ?
publicvoidUploadFile(FileUploadMessagerequest) ?
{ ?
stringuploadFolder=@C:\kkk\; ?
stringsavaPath=request.SavePath; ?
stringdateString=DateTime.Now.ToShortDateString()+@\; ?
stringfileName=request.FileName; ?
StreamsourceStream=request.FileData; ?
FileStreamtargetStream=null; ?
if(!sourceStream.CanRead) ?
{ ?
thrownewException(数据流不可读!); ?
} ?
if(savaPath==null)savaPath=@Photo\; ?
if(!savaPath.EndsWith(\\))savaPath+=\\; ?
?
uploadFolderuploadFolder=uploadFolder+savaPath+dateString; ?
if(!Directory.Exists(uploadFolder)) ?
{ ?
Directory.CreateDirectory(uploadFolder); ?
} ?
stringfilePath=Path.Combine(uploadFolder,fileName); ?
using(targetStream=newFileStream(filePath,FileMode.Create,FileAccess.Write,FileShare.None)) ?
{ ?
//readfromtheinputstreamin4Kchunks ?
//andsavetooutputstream ?
您可能关注的文档
- 成熟畸胎瘤28例手术治疗分析.doc
- 成都市教育系统1050名上岗教师牙周健康情况调查.doc
- 成都市第二十中学校2007-2008学年度(下期)学月考试高2010级英语(学科)试题.doc
- 成都市金三物业管理有限公司活动调研.doc
- 成骨发育不全2例.doc
- 我中心利用Excel进行固定资产管理的体会.doc
- 我区剖腹产率过高的现状分析及其应对措施.doc
- 我国中医药文化创意产业发展趋势.doc
- 我国以资产养老制度的困境与出路.doc
- 我国保健品产业崛起的成因探析.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)