WCF利用Stream上传大文件

转自别人的文章,学习这个例子,基本上wcf也算入门了,接口用法、系统配置都有了

本文展示了在asp.net中利用wcf的stream方式传输大文件,解决了大文件上传问题。主要是存档方便以后遇到该问题是来查阅。贴出部分代码,如果有疑惑或需要完整代码的请留言 WebForm1.aspx.cs

  1. protected void Button1_Click(object sender, EventArgs e)
  2. {
  3.             FileData file = new FileData();             file.filename = FileUpload1.FileName;             file.data = FileUpload1.PostedFile.InputStream;             GetDataService c = new GetDataService();             c.UploadFile(file);             Response.Write("文件传输成功!");
  4. }

IService1

  1. namespace WcfService1
  2. {
  3. // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
  4. [ServiceContract]
  5. public interface IGetDataService
  6. {
  7. [OperationContract]
  8. void UploadFile(FileData file);
  9. }
  10. [MessageContract]
  11. public class FileData
  12. {
  13. [MessageHeader]
  14. public string filename;
  15. [MessageBodyMember]
  16. public Stream data;
  17. }
  18.  
  19. }

Service1.svc

  1. namespace WcfService1
  2. {
  3. public class GetDataService : IGetDataService
  4. {
  5. public void UploadFile(FileData file)
  6. {
  7.  
  8. FileStream fs = new FileStream("D:\\我的项目\\WcfService1\\Files\\" + file.filename, FileMode.OpenOrCreate);
  9.  
  10. try
  11. {
  12.  
  13. BinaryReader reader = new BinaryReader(file.data);
  14.  
  15. byte[] buffer;
  16.  
  17. BinaryWriter writer = new BinaryWriter(fs);
  18. long offset = fs.Length;
  19. writer.Seek((int)offset, SeekOrigin.Begin);
  20.  
  21. do
  22. {
  23.  
  24. buffer = reader.ReadBytes(1024);
  25.  
  26. writer.Write(buffer);
  27.  
  28. } while (buffer.Length > 0);
  29.  
  30. fs.Close();
  31. file.data.Close();
  32.  
  33. }
  34. catch (Exception e)
  35. {
  36. throw new Exception(e.Message);
  37. }
  38. finally
  39. {
  40.  
  41. fs.Close();
  42. file.data.Close();
  43.  
  44. }
  45.  
  46. }
  47. }

web.config

  1. <configuration>
  2.  
  3. <system.web>
  4. <compilation debug="true" targetFramework="4.0" />
  5. <httpRuntime maxRequestLength="40960" />
  6. </system.web>
  7. <system.serviceModel>
  8. <bindings>
  9. <basicHttpBinding>
  10. <binding name="BasicHttpBinding_IGetDataService" closeTimeout="00:01:00"
  11. openTimeout="00:01:00" receiveTimeout="01:10:00" sendTimeout="01:10:00"
  12. allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
  13. maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
  14. transferMode="Streamed"
  15. useDefaultWebProxy="true">
  16. <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
  17. maxBytesPerRead="4096" maxNameTableCharCount="16384" />
  18. <security mode="None">
  19. <transport clientCredentialType="None" proxyCredentialType="None"
  20. realm="" />
  21. <message clientCredentialType="UserName" algorithmSuite="Default" />
  22. </security>
  23. </binding>
  24. </basicHttpBinding>
  25. </bindings>
  26. <client>
  27. <endpoint address="http://localhost:52884/mex" binding="basicHttpBinding"
  28. bindingConfiguration="BasicHttpBinding_IGetDataService" contract="IGetDataService"
  29. name="BasicHttpBinding_IGetDataService" />
  30. </client>
  31. </system.serviceModel>
  32. <system.webServer>
  33. <modules runAllManagedModulesForAllRequests="true"/>
  34. </system.webServer>
  35.  
  36. </configuration>

看到有好几位同学想要源码的,我重新做了个测试工程,经测试只要网络支持,是可以上传几十M以上的大文件的

附上测试工程项目源码:http://files.cnblogs.com/easywebfactory/WcfService1.rar

WCF利用Stream上传大文件的更多相关文章

  1. Asp.net MVC利用WebUploader上传大文件出现404解决办法。

    刚开始我上传小文件都是比较顺利的,但是上传了一个大文件大约有200M的压缩包就不行了.在chrome里面监视发现网络状态是404,我分析可能不是WebUploader的限制,应该是WebConfig限 ...

  2. PHP上传大文件 分割文件上传

    最近遇到这么个情况,需要将一些大的文件上传到服务器,我现在拥有的权限是只能在一个网页版的文件管理系统来进行操作,可以解压,可以压缩,当然也可以用它来在线编辑.php文件. 文件有40M左右,但是服务器 ...

  3. WEB上传大文件解决方案

    众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路.下面贴出简易 ...

  4. C# 上传大文件

    上传大文件首先要修改web.config文件,否则上传报错.在web.config添加如下配置maxRequestLength表示能上传的最大文件值,单位是KB,requestLengthDiskTh ...

  5. WEB上传大文件

    众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路.下面贴出简易 ...

  6. [Asp.net]Uploadify上传大文件,Http error 404 解决方案

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章:[Asp.net]Upl ...

  7. php 上传大文件配置upload_max_filesize和post_max_size选项

    php 上传大文件配置upload_max_filesize和post_max_size选项 (2014-04-29 14:42:11) 转载▼ 标签: php.ini upload _files[f ...

  8. ASP.NET上传大文件的问题

    原文:http://www.cnblogs.com/wolf-sun/p/3657241.html?utm_source=tuicool&utm_medium=referral 引言 之前使用 ...

  9. php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项

    php 上传大文件主要涉及配置 upload_max_filesize 和post_max_size两个选项   今天在做上传的时候出现一个非常怪的问题,有时候表单提交可以获取到值,有时候就获取不到了 ...

随机推荐

  1. clnt_create: RPC: Program not registered

    原因:[root@nfs nfs]# systemctl start nfs-utils 解决方法:[root@nfs nfs]# systemctl start nfs

  2. 关于二进制——lowbit运算

    lowbit(n)意思即为找出n在二进制表示下最后一位1即其后面的0所组成的数值,别的东西算法书上有,这里提出一个重要的公式 lowbit(n)=n&(~n+1)=n&(-n),这个有 ...

  3. Linux驱动开发调试 -- 打开dev_dbg()【转】

    本文转载自:https://blog.csdn.net/kunkliu/article/details/78048618 转载地址:http://blog.chinaunix.net/uid-2284 ...

  4. newcoder 筱玛的迷阵探险(搜索 + 01字典树)题解

    题目描述 筱玛是个快乐的男孩子. 寒假终于到了,筱玛决定请他的朋友们一起来玩迷阵探险. 迷阵可以看做一个n×nn×n的矩阵A,每个格子上有一个有一个数Ai,j. 入口在左上角的(1,1)处,出口在右下 ...

  5. 【Spring Security】六、自定义认证处理的过滤器

    这里接着上一章的自定义过滤器,这里主要的是配置自定义认证处理的过滤器,并加入到FilterChain的过程.在我们自己不在xml做特殊的配置情况下,security默认的做认证处理的过滤器为Usern ...

  6. hihoCoder week15 最近公共祖先·二

    tarjan求lca  就是dfs序中用并查集维护下,当访问到询问的第二个点u的时候  lca就是第一点的find(fa[v]) fa[v] = u; // 当v为u的儿子 且 v已经dfs完毕 #i ...

  7. P2272 [ZJOI2007]最大半连通子图

    思路 tarjan的题目 注意是要选出一个点集而不是边集 第一问就是缩点之后最长链,第二问就是有多少个最长链,注意缩点后连边要去重(不然一个链的方案可能会被统计多次) 代码 #include < ...

  8. 使用vue做表单验证

    <template> <Form ref="formInline" :model="formInline" :rules="rule ...

  9. Nuget 打包 for .Net Standart project

    Create .NET Standard packages with Visual Studio 2015 Publishing packages nuge.exe 放在项目目录中 nuget spe ...

  10. 正则解析json数据

    http://tool.chinaz.com/regex http://tool.oschina.net/regex/