



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
手把手教你实现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,接口文件的代码如下:1. ServiceContract 2. publicinterfaceIUpLoadService 3. 4. OperationContract(Action=UploadFile,IsOneWay=true) 5. voidUploadFile(FileUploadMessagerequest); 6. 7. MessageContract 8. publicclassFileUploadMessage 9. 10. MessageHeader(MustUnderstand=true) 11. publicstringSavePath; 12. MessageHeader(MustUnderstand=true) 13. publicstringFileName; 14. MessageBodyMember(Order=1) 15. publicStreamFileData; 16. 定义FileUploadMessage类的目的是因为第三个限制,要不然文件名和存放路径就没办法传递给WCF了,根据第二个限制,文件数据是用System.IO.Stream来传递的接口方法只有一个,就是WCF上传文件,注意方法参数是FileUploadMessage接口实现类文件的代码如下:17. publicclassUpLoadService:IUpLoadService 18. 19. publicvoidUploadFile(FileUploadMessagerequest) 20. 21. stringuploadFolder=C:kkk; 22. stringsavaPath=request.SavePath; 23. stringdateString=DateTime.Now.ToShortDateString()+; 24. stringfileName=request.FileName; 25. StreamsourceStream=request.FileData; 26. FileStreamtargetStream=null; 27. if(!sourceStream.CanRead) 28. 29. thrownewException(数据流不可读!); 30. 31. if(savaPath=null)savaPath=Photo; 32. if(!savaPath.EndsWith()savaPath+=; 33. 34. uploadFolderuploadFolder=uploadFolder+savaPath+dateString; 35. if(!Directory.Exists(uploadFolder) 36. 37. Directory.CreateDirectory(uploadFolder); 38. 39. stringfilePath=Path.Combine(uploadFolder,fileName); 40. using(targetStream=newFileStream(filePath,FileMode.Create,FileAccess.Write,FileShare.None) 41. 42. /readfromtheinputstreamin4Kchunks 43. /andsavetooutputstream 44. constintbufferLen=4096; 45. bytebuffer=newbytebufferLen; 46. intcount=0; 47. while(count=sourceStream.Read(buffer,0,bufferLen)0) 48. 49. targetStream.Write(buffer,0,count); 50. 51. targetStream.Close(); 52. sourceStream.Close(); 53. 54. 55. 实现的功能是到指定目录下按照日期进行目录划分,然后以传过来的文件名
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民族法治普法宣传课件
- 工业革命与新质生产力的演进逻辑
- 向新向实新质生产力
- 文旅新质生产力
- 2025年全科医生全科诊疗能力考核答案及解析
- 2025年心理学在皮肤病临床应用模拟测试卷答案及解析
- 2025年康复治疗学康复设备使用技巧考试答案及解析
- 2025年心血管病学思维能力与判断力检测模拟试卷答案及解析
- 2025年产科产后护理能力测试答案及解析
- 2025年外科学科常见外科手术操作技能评估答案及解析
- 2025年云南文山交通运输集团公司招聘考试笔试试卷【附答案】
- 设备维护保养基础知识
- 企业工伤赔偿培训课件
- 大学生职业生涯规划课教案
- 肝血管瘤护理查房
- 世纪佳缘会员管理制度
- 邻里纠纷及其合法合理处理课件
- 武汉工业地产市场调查分析报告30
- 【共享经济下网约工劳动关系认定问题研究-以外卖骑手为例18000字(论文)】
- 被动解除劳动合同范本
- 螃蟹养殖合同协议书模板
评论
0/150
提交评论