最近老板安排了个文件管理系统的开发项目,用户上传的文件大的有几百兆甚至有1,2G的压缩文件,在ASP.NET中有没有什么方式能实现上传如此大的文件?我用fileupload控件上传10来兆的勉强还可以,如果大点的文件服务器直接就挂了~~

解决方案 »

  1.   

    ASP.NET如果用fileupload控件上传一些小的文件是可以的,但是如果说你要上传上G的文件,肯定不能用我们传统的方法的,因为这不仅涉及到性能问题还涉及到网络的问题,上传一般如果网络中断了怎么办?如果你只会ASP.NET的话你可以参考一下这篇文章给出的解决方案:ASP.NET实现大文件断点续传功能 http://www.hello-code.com/blog/asp.net/201412/4936.html希望对你有帮助
      

  2.   

    “文件管理系统的开发项目”,你应该让你的项目经理或者技术经理来拿出框架和技术,而不是你自己来决定。一个普通的asp.net程序员,就算是再干6、7年(还是仅仅搞asp.net的话),做不了这个。
      

  3.   

    网上有一个Web大文件上传控件:http://url.cn/THJaUJ
    它可以上传文件夹(包含层级结构),上传超大文件,文件MD5验证,支持断点续传,支持WINDOWS平台下的主流浏览器:IE 6(x86),IE 7(x86),IE 8(x86),IE 9(x86,x64),IE 10(x86,x64),IE 11(x86,x64),
    Maxthon(遨游)1.x,Maxthon(遨游)2.x,TT浏览器,QQ浏览器,360安全浏览器,360极速浏览器,搜狗浏览器,Firefox,Chrome,Opera 23。
    上传文件夹:粘贴文件,简化选择文件操作:文件MD5值计算进度:文件MD5值计算完毕服务器根据MD5检测是否存在相同文件续传文件从服务器加载文件列表文件上传中文件上传完毕上传文件夹与Discuz!X2整合-后台安装断点续传控件与Discuz!X2整合-后台启用断点续传控件与Discuz!X2整合-后台断点续传控件启用成功与Discuz!X2整合-前台发帖页面与Discuz!X2整合-上传文件夹上传,本地文件夹层级结构服务器上的文件夹层级结构 
    页面调用示例代码:<html>
    <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>HttpUploader6演示页面</title>
        <link type="text/css" href="css/HttpUploader.css" rel="Stylesheet"/>
        <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
        <script type="text/javascript" src="js/HttpUploader.js" charset="utf-8"></script>
        <script language="javascript" type="text/javascript">
            var cbMgr = new HttpUploaderMgr();
        $(document).ready(function ()
        {
             cbMgr.LoadTo("FilePanel");
             cbMgr.SetupCheck(); //安装检查
     
                  //取MAC地址
             //var mac = cbMgr.Browser.GetMacs();
             //alert(mac[0]);
     
             //上传指定目录下的所有文件
            //cbMgr.Browser.GetFiles("F:\\ftp\\", false);
        });
        </script>
    </head>
    <body>
        <div id="msg"></div>
         <div id="FilePanel"></div>
    </body>
    </html>资源下载:
    cab安装包(x86)
    cab安装包(x64)
    crx安装包
    xpi插件安装包
    exe安装包
    开发文档
    升级日志 
     
    ASP.NET示例
    JSP-ACCESS示例
    JSP-SQL2005示例
    JSP-MySQL示例
    JSP-Oracle示例
    PHP-MySQL示例
      

  4.   

    大文件上传的思路去网上查“思归 大文件上传”的文章。
    对于第一次接触大文件上传的人有2个知识点要学:一个是获取文件的大小,另一个是分块上传。
    就算最终自己没实现也没关系,因为你最终要学的是一个分块的思路,为何要分块。我当时看的也头大,最终也没实现它。但是我却学到了分块的理念。这点很重要,为何要分块,试想一下你上传1个1G的文件。是直接把1G的文件丢到到服务器内存中,如果同时100个人上传1个1G的文件,服务器是受不了的。所以才会有分块的理念,不过自己也没实际写过例子。直到最近要实现一个断点续传的功能,这个功能是一个下载功能,正好和大文件上传相反,但是我在网上看到的源码,下载时也用到了分块原理。
      

  5.   

    ASP.net能做的功能有限,尽管在web.config里可以适当增大上传的文件容量,但终究远不能解决G级文件的问题
    从根本上解决问题,去学socket吧,客户端,服务端,一个上传,最多一周搞定
    刚参加工作,要充满信心,敢去闯,说不定老板还就欣赏你的学习潜力呢
      

  6.   

    asp.net的上传控件,可以设置大小,但是最大好像是4G(记不清了)
    但是,只要超过你设置的最大上传大小,就直接报错。调试的机会都没有。
    这是.net控件内部的问题。没办法解决。
    不过网上有许多第三方控件可以试试。
      

  7.   

    那是不是得放弃ASP.NET换别的语言比较好?
      

  8.   

    可以使用ftp上传方式,写个通用类
      

  9.   

    不是的,哪怕你用html标签的 file,也是一样的。
    要解决你的问题,也只能找找第三方控件
      

  10.   

    不是的,哪怕你用html标签的 file,也是一样的。
    要解决你的问题,也只能找找第三方控件看样子微软真的不行~
      

  11.   

    不是的,哪怕你用html标签的 file,也是一样的。
    要解决你的问题,也只能找找第三方控件看样子微软真的不行~
    和微软有半毛钱关系?
      

  12.   

    不是的,哪怕你用html标签的 file,也是一样的。
    要解决你的问题,也只能找找第三方控件看样子微软真的不行~
    和微软有半毛钱关系?那为什么淘宝这样的网站不用.NET开发?
      

  13.   

    大文件不能上传跟.net没关系,是http请求局限。如果要上传大文件建议采用FTP或者socket方式,自己写个activex插件上传,不过activex控件只能在ie下运行,我觉得你这个问题可以请教你们老大,毕竟不是简单的事情
      

  14.   

    谢谢你的建议,以前没玩过FTP,那玩意会很难吗?
      

  15.   

    不是的,哪怕你用html标签的 file,也是一样的。
    要解决你的问题,也只能找找第三方控件看样子微软真的不行~和微软没毛钱关系,楼上都说了用html的file标签也不行,微软搞的asp.net服务器控件也是基于html标签的,最终生成的也是html标签
      

  16.   

    不是的,哪怕你用html标签的 file,也是一样的。
    要解决你的问题,也只能找找第三方控件看样子微软真的不行~和微软没毛钱关系,楼上都说了用html的file标签也不行,微软搞的asp.net服务器控件也是基于html标签的,最终生成的也是html标签好吧,貌似你很牛的样子
      

  17.   

    首先没有一次性上传那么大文件的,最起码要分段上传,还有要把你webservice的上传限制改成你限制的最大数量
      

  18.   

    如果你要使用分段上传下载的话,建议你用resumable.js 它封装好了的 很好用
      

  19.   

    http://q.cnblogs.com/q/38110/
      

  20.   

    一般的http请求不适合上传大文件,连接不稳定
    最好用ftp或者使用支持长连接的httpsocket
      

  21.   

    之所以说不稳定,主要是因为传统的http请求是无状态的,发出去后剩下的就是服务端的事了
      

  22.   

    SignalR http://www.cnblogs.com/scy251147/archive/2013/03/08/2950632.html
    Node.js http://www.codeceo.com/article/node-js-upload-large-file.html