现在要实现上传100M大的文件。
方法一,用VS2008自带控件,FileUpload,在web.confing设置。
<httpRuntime executionTimeout="3600" maxRequestLength="819000" />
也试过设置成这样
<httpRuntime executionTimeout="3600" maxRequestLength="819000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
还是不行,常有两种状态:一个是找不到服务器,一个是上传上传就显示空白页。
方法二,就是提供免费的上传控件来用用。
要求:配置简单(像swfupdaae这类,难用,的就免谈了)给分要求:
50分是散发。
150分,专给一个采用的提供方法人。最后,多谢大家,事因,实在急,也搞了很久,因无办法,多谢。

解决方案 »

  1.   

    需要修改的地方上载大文件时,可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值,例如:
      <configuration>
       <system.web>
        <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
       </system.web>
    </configuration>
     其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。
     另外,上载大文件时,还可能会收到以下错误信息:
      aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。
     如果遇到此错误信息,请增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。例如:
      <configuration>
       <system.web>
          <processModel memoryLimit="80"/>
       </system.web>
    </configuration>
      

  2.   

    试试 这几个
    分卷压缩后 小文件分多次上传
    http://www.open-open.com/ajax/Upload.htm
      

  3.   

    明天分布QQ邮箱,如果还是用FileUpload方法,
    this.FileUpload2.SaveAs(path + this.FileUpload2.FileName);
    还是无法解决上传超过100M,无法上传的,那就算了,提供控件,最好自己在远程测试过的最好,因为本地有一个问题就超时的问题,本地测试是可以的,我也是这样,但上了服务器就不行了
    多谢大家,多谢有劳了。。
      

  4.   

    另外,iis7还需要设置 maxAllowedContentLength
      

  5.   

    你还要考虑脚本超时啊。网络传输100M需要很长时间的
      Server.ScriptTimeout = 99999;
      

  6.   

    请孟子E章出来再讲讲好不好,
    我的确是这样设置了,<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
    但是超过30M还是提示提不到服务器,服务器内存可能有几十G,应该不会超60%。
    就是上传不了,急
      

  7.   

    直接用ftp上传
    public void Upload()
    {
     if (FileUpload1.HasFile)
            {
                string fileName = FileUpload1.FileName;
                string path = "ftp://localhost/" + fileName;            FtpWebRequest ftpWebRequest = FtpWebRequest.Create(path) as FtpWebRequest;
                ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
                ftpWebRequest.Credentials = new NetworkCredential("UserName", "Password");            using (Stream stream = ftpWebRequest.GetRequestStream())
                {
                    byte[] data= FileUpload1.FileBytes;
                    stream.Write(data, 0, data.Length);
                }
            }
    }
    QQ群:59557329 .NET技术开发联盟
    希望大家可以踊跃参加,积极讨论
      

  8.   

    在页面的前面写Server.ScriptTimeout = 99999;
      

  9.   

     protected void Page_Load(object sender, EventArgs e)
     {
       Server.ScriptTimeout = 3600;
     }
      

  10.   

     我能问一下问题吗?我上传30M时也不是很大,就卡在30M以上传不了,就30M也传不了,30M不是很大,要不要也设置脚本超时时间啊
      

  11.   

    上传100M
    大文件使用ftpwebrequest,断点续传
    大文件上传使用ftp或用组件如neatupload、SWFUload ,分块上传  
    <configuration>  
      <system.web>  
      <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />  
      </system.web>  
    </configuration>  
    其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。  
    增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。  
    <configuration>  
      <system.web>  
      <processModel memoryLimit="80"/>  
      </system.web>  
    </configuration>  
    上传组件
      

  12.   

    http://krystalware.com/blog/archive/2004/02/04/181.aspx
     去看看这个吧
      

  13.   

    肯定是代码问题 ., 30M是肯定行的 . 检查看上传的服务器的路径正确否 ??
    我用ExtUpload组件上传 单个文件1.64G上传至服务器ok的. 多文件上传共有4.65G.
    额 ,FTP上传的话也不错.貌似有个类专门是FTP上传类的吧.
    FTP的话, 你需要有FTP服务器. 网上有很多下载.public class ftp
    {
    public ftp()
    {
    //
    //TODO: 在此处添加构造函数逻辑
    //
    }    // FTP 配置信息
        static string ftpServerIP = "192.168.0.1";//这里放ftp地址
        static string ftpUserID = "test";//这里放用户名
        static string ftpPassword = "111";//这里放密码
        public static string uri = "";
        public static bool UploadFile(string filename)
        {
            FileInfo fileInf = new FileInfo(filename);        //月份
            string monthstr = "";
            if (DateTime.Now.Month < 10)
            {
                monthstr = "0" + DateTime.Now.Month.ToString();
            }
            else
            {
                monthstr = DateTime.Now.Month.ToString();
            }        //天数(这应该是看一天上传可多少文件)
            string daystr = "";
            if (DateTime.Now.Day < 10)
            {
                daystr = "0" + DateTime.Now.Day.ToString();
            }
            else
            {
                daystr = DateTime.Now.Day.ToString();
            }
            //文件夹名称按月份+天数命名
            string datastr = DateTime.Now.Date.Year + monthstr + daystr;
            MakeDir(datastr);        uri = "ftp://" + ftpServerIP + "/" + datastr + "/" + fileInf.Name;
            FtpWebRequest reqFTP;        // 根据uri创建FtpWebRequest对象 
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + datastr + "/" + fileInf.Name));        // ftp用户名和密码
            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);        // 默认为true,连接不会被关闭
            // 在一个命令之后被执行
            reqFTP.KeepAlive = false;        // 指定执行什么命令
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;        // 指定数据传输类型
            reqFTP.UseBinary = true;        // 上传文件时通知服务器文件的大小
            reqFTP.ContentLength = fileInf.Length;        // 缓冲大小设置为2kb
            int buffLength = 2048;        byte[] buff = new byte[buffLength];
            int contentLen;        // 打开一个文件流 (System.IO.FileStream) 去读上传的文件
            FileStream fs = fileInf.OpenRead();
            try
            {
                // 把上传的文件写入流
                Stream strm = reqFTP.GetRequestStream();            // 每次读文件流的2kb
                contentLen = fs.Read(buff, 0, buffLength);            // 流内容没有结束
                while (contentLen != 0)
                {
                    // 把内容从file stream 写入 upload stream
                    strm.Write(buff, 0, contentLen);                contentLen = fs.Read(buff, 0, buffLength);
                }            // 关闭两个流
                strm.Close();
                fs.Close();            return true;
            }
            catch (Exception ex)
            {
                // MessageBox.Show(ex.Message, "Upload Error");
                HttpContext.Current.Response.Write("Upload Error:" + ex.Message);
            }        return false;
        }
        /// <summary>
        /// 创建文件夹I
        /// </summary>
        /// <param name="dirName"></param>I
        private static void MakeDir(string dirName)
        {
            FtpWebRequest reqFTP;
            try
            {
                // dirName = name of the directory to create.            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + @"/" + dirName));
                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                Stream ftpStream = response.GetResponseStream();
                ftpStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {        }
        }
    }
      

  14.   

      <configuration>
    <system.web>
    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
    </system.web>
    </configuration>
    http://www.open-open.com/ajax/Upload.htm
      

  15.   

    关注中..。学习..   这两天看了好些帖子.。  都没有想要的.。 单个上传文件4G,汗.。 除了ftp上传,我想不到别的.。 
      

  16.   

    用开源的NeatUpload组件可以轻松解决问题,超简单,看http://www.marble2.net
      

  17.   

    改下IIS_schema.xml里的相关设置,默认是3000000约30M上传用jquery uploadify挺简单的,有进度条支持多上传,配置基本没有,自己写上传后的逻辑就完了
      

  18.   

    不改IIS_schema的话web.config设置成多少也是没用
    路径在\Windows\System32\inetsrv\config\schema下
      

  19.   

    http://topic.csdn.net/u/20090222/23/61361349-1786-4b1c-9028-b0ad9460405f.html
      

  20.   


    http://51.dc.ftn.qq.com/ftn_handler/2158f79951d2640bc7d9101341f5a01898655cf2293b6a5067b2d61f382f17b02ff9835ade64058d020da6d8d6c97aa8e07734f298c5b666554d069cd8af46d2/Desktop.rar?k=26383064bb5fcd9921c8c66442640049020e540705010b034b09020657490657025b1d055757034b560f54015d550507515a0454646f3222034b5b100b141c14074a3059&fr=00&&txf_fid=3cae419f580d7cae89ea29c6eac736804686cf32提取码f80ddd2f前提先按照我前面所说修改IIS_schema
      

  21.   

    我上传没遇到多什么问题啊
    <system.web>
    <httpRuntime 
    maxRequestLength="102400"  //指定输入流缓冲阈值限制(单位为KB)
    executionTimeout="3600" //允许执行请求的最大秒数, 只有当调试属性compilation= False时,此超时属性才适用
    appRequestQueueLimit="1000"/> //指定应用程序排队的请求的最大数目。当自由线程不够时,将对请求进行排队。当排队队列超出了设定值时,将显示“503 - 服务器太忙”错误信息拒绝传入的请求。 
    <compilation debug="true" defaultLanguage="c#">
    </system.web>
      

  22.   

    很多上传空间,支持.NET
    希望可以帮到楼主
      

  23.   

    我是用aspnet 3.5 综楼主大家所言,我都试过,自带控件,还是出问题,大家提供的控件,不是看不懂,就是好难搞,也搞不好大家还有什么方法啊,多谢多谢。。
      

  24.   

    你说是要改,IIS_schema,我也查了查,我上传不超过30M也可以啊不改IIS_schema应该也是可以,服务器也不是我一个人的,不好改啊。
      

  25.   

    <td class="right">资料上传:</td>
    <td style="height: 25px">
          <asp:FileUpload ID="FileUpload1" runat="server" />(资料格式:rar,doc)
          <asp:Button ID="BtnUploaf" runat="server" Text="上传" onclick="BtnUploaf_Click" />
          <asp:Label ID="labFileName" runat="server" Visible="false" Text=""></asp:Label>
    </td>======================= 资料上传 =============================
    protected void BtnUploaf_Click(object sender, EventArgs e)
    {
          if (FileUpload1.PostedFile != null)
          {
              HttpPostedFile hpf = this.FileUpload1.PostedFile;
              string FileSize = Convert.ToString(Convert.ToInt32(hpf.ContentLength.ToString()) / 1024);// +"KB";
                    //取得文件名(不含路径)                char[] de = { '\\' };
                    string[] AFilename = hpf.FileName.Split(de);
                    string strFilename = AFilename[AFilename.Length - 1];
                    string flag = strFilename.Substring(strFilename.LastIndexOf('.') + 1);              ViewState["FileFlag"] = flag;//文件的后缀名
                    ViewState["FileSize"] = FileSize; //文件的大小                if (strFilename.Substring(strFilename.LastIndexOf('.') + 1) == "rar" || strFilename.Substring(strFilename.LastIndexOf('.') + 1) == "doc"
                        || strFilename.Substring(strFilename.LastIndexOf('.') + 1) == "RAR" || strFilename.Substring(strFilename.LastIndexOf('.') + 1) == "DOC")
                    {                        
    hpf.SaveAs(Server.MapPath("/UploadBBSFile/" + strFilename));//上传至服务器                        string dateStr = string.Format(DateTime.Now.ToString("yyyy") + @"\" + DateTime.Now.ToString("MM") + @"\" + DateTime.Now.ToString("dd") + @"\");
                        }                    
                  Session["FileName"] = strFilename; //资料名(原名)
                    this.labFileName.Text = strFilename;
                  ClientScript.RegisterStartupScript(this.GetType(), null, "<script>alert(\"资料上传成功!\");</script>");
                        return;
                    }
                    else
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), null, "<script>alert(\"资料格式不正确!\");</script>");
                        return;
                    }
                }
            }
      

  26.   

    那单纯做个上传有何难度啊,我给的那两个,上传视频的可能麻烦点看不懂,另外那个直接拿过去就可以用了那个swfuplpoad的把JS也放出来啊
    好像web.confing也要配置对吧
    把相关的配置也放出来,好不
      

  27.   

    楼主到网上搜一下 
    WebbUpload.zip 
    这个是某高人做的例子,完整的,我就是根据他的解决问题了,上传2G没啥问题 大文件上传是有点复杂,楼主必须要花些时间来消化
      

  28.   

    还有
    UploadDemo.rar
    AspnetUpload_23.zip
    希望对楼主有所帮助
      

  29.   


    我给你的两个都不用web.config
    忘了js了哈哈
    http://31.dc.ftn.qq.com/ftn_handler/bb743a1b1adc4013aa24b7cbbe3b5dac535136ffe734750d0c20adf53c2f5b17157d265bf851d9adcffb962afb4d96c9619114010a19c0cf12dd049ffb01f810/swfupload.rar?k=706232365113c99e7592c4361f66044e045107525c0001501f0153555a4b025201551f0e0855544c020604550a05060706530450396b361245044746550957051c105344395b&fr=00&&txf_fid=bb0d609007ca74a1859a7b900df9dc3d94ac10e9使用QQ旋风下载(提取码 2b269f6a)
      

  30.   

    里面也就用了个ckeditor,既然做技术不要等着全都喂到嘴边,这样没啥发展,给你做个倒没什么,几分钟的事,但这是只是害了你
      

  31.   

    用webservice用流的方式自己实现多线程及续传的功能,我做过肯定没有问题的。
      

  32.   

    现在实最火的是,连15M也上传不了了,之前还可以上传20多M的,现在上传15M,上传一会就会变成空白页,一会儿显示(无法显示网页)找不到服务器
    怎办啊??
    各位大牛。。
      

  33.   


    我的缺省2003,只能上传200K以内的文件
    但是,delphi写的文件接收isapi似乎没有受这个限制,接收的post数据可以大很多
      

  34.   

    使用aspupload组件进行上传,我试过,文件在400M还是可行的。
      

  35.   

    把文件切成很多块,模拟用post上去,写到服务器上。到服务器再拼装起来。
    我们2G大附件都这样传的。但是有插件。其实原理是一样的。
      

  36.   

    使用aspupload组件进行上传,我试过,文件在400M还是可行的。
      

  37.   

    <system.web>
    <httpRuntime executionTimeout="1200" maxRequestLength="409600" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="5000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false"/>
    </system.web>
    一定要写在system.web之间,先搜索system.web的开始位置,然后把
    <httpRuntime executionTimeout="1200" maxRequestLength="409600" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="5000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false"/>复制进去就行了。
      

  38.   

    <httpRuntime maxRequestLength="2097151" executionTimeout="300000"/>  在配置文件里面写上就行了
      

  39.   

    网上有一个Web大文件断点续传控件:http://www.cnblogs.com/xproer/archive/2012/05/29/2523757.html
    此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
    粘贴文件,简化选择文件操作:文件MD5值计算进度:文件MD5值计算完毕服务器根据MD5检测是否存在相同文件续传文件从服务器加载文件列表文件上传中文件上传完毕上传文件夹与Discuz!X2整合-后台安装断点续传控件与Discuz!X2整合-后台启用断点续传控件与Discuz!X2整合-后台断点续传控件启用成功与Discuz!X2整合-前台发帖页面与Discuz!X2整合-上传
    页面调用示例代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>HTTP断点续传控件与MySQL数据库演示页面(UTF-8)</title>
        <link href="HttpUploader/HttpUploader.css" type="text/css" rel="Stylesheet"/>
        <script type="text/javascript" charset="utf-8" src="HttpUploader/FileLister.js"></script>
        <script type="text/javascript" charset="utf-8" src="HttpUploader/HttpUploader.js"></script>
        <script type="text/javascript" charset="utf-8" src="HttpUploader/combinbox.js"></script>
        <script type="text/javascript" src="HttpUploader/jquery-1.3.2.min.js"></script>
        <script language="javascript" type="text/javascript">
         var cbItemLast = null;
         var cbMgr = new CombinBoxMgr();     $(document).ready(function()
         {
         cbMgr.LoadInControl("FilePanel");
         cbMgr.Init();
         });
        </script>
    </head>
    <body>
    <div id="FilePanel"></div>
    </body>
    </html>资源下载:
    CAB安装包
    开发文档
    ASP.NET-ACCESS示例
    ASP.NET-SQL2005示例
    JSP-ACCESS-GB2312示例
    JSP-ACCESS-UTF8示例
    JSP-SqlServer2005-UTF8示例
    JSP-MySQL-UTF8示例
    PHP-MySQL-UTF8示例