正确处理WCF文件及解决方案

虽然有许多人对WCF文件的使用性表示怀疑,但在年复一年的不断发展中,但前提是要深入理解到底什么是WCF文件,及WCF是怎么运作的。 下面就对WCF文件进行深一步的介绍。。。

这样,既不用添加服务引用,也不需要生成代理。文件传输的函数不是很难,代码如下:

 
 
 
  1. publicvoidTransferFile(FileTransferMessagerequest)  
  2. {  
  3. stringlogInfo;  
  4.  
  5. Program.Get_ILog().Log(logInfo=string.Format("开始接收文件,name={0}",request.FileName));//填写日志  
  6. //文件信息  
  7. stringuploadFolder=AppValue.GetParam()._saveDir;  
  8. stringsavaPath=request.SavePath;  
  9. stringfileName=request.FileName;  
  10. StreamsourceStream=request.FileData;  
  11. FileStreamtargetStream=null;  
  12. //判断文件是否可读  
  13. if(!sourceStream.CanRead)  
  14. {  
  15. thrownewException("数据流不可读!");  
  16. }  
  17. if(savaPath==null)savaPath=@"文件传输\";  
  18. if(!savaPath.EndsWith("\\"))savaPath+="\\";  
  19. if(!uploadFolder.EndsWith("\\"))uploadFolder+="\\";  
  20.  
  21. uploadFolderuploadFolder=uploadFolder+savaPath;  
  22. //创建保存文件夹  
  23. if(!Directory.Exists(uploadFolder))  
  24. {  
  25. Directory.CreateDirectory(uploadFolder);  
  26. }  
  27.  
  28. intfileSize=0;  
  29. stringfilePath=Path.Combine(uploadFolder,fileName);//Combine合并两个路径  
  30. try  
  31. {  
  32. 文件流传输  
  33. using(targetStream=newFileStream(filePath,FileMode.Create,FileAccess.Write,FileShare.None))  
  34. {  
  35. 定义文件缓冲区  
  36. constintbufferLen=4096;  
  37. byte[]buffer=newbyte[bufferLen];  
  38. intcount=0;  
  39.  
  40. while((count=sourceStream.Read(buffer,0,bufferLen))>0)  
  41. {  
  42. targetStream.Write(buffer,0,count);  
  43. fileSize+=count;  
  44. }  
  45. targetStream.Close();  
  46. sourceStream.Close();  
  47. }  
  48. }  
  49. catch(Exceptionex)  
  50. {  
  51. Program.Get_ILog().Log(logInfo+ex.Message);  
  52. }  
  53.  
  54. Program.Get_ILog().Log(string.Format("接收文件完毕name={0},filesize={1}",  
  55. request.FileName,fileSize));  

WCF文件其他的代码感兴趣的朋友下载来研究吧!

【编辑推荐】

  1. 专家教您WCF异步调用方法
  2. 对WCF异步调用进行服务操作
  3. 阐述WCF学习相关经验
  4. 对WCF框架服务模型简介
  5. 详细分析WCF控件使用问题

 

THE END