下面的是上传文件的代码,为什么点击"发送(1)"(HTML服务器按钮)按钮会显示该页无法显示呢?
而当我重新启动页面点"发送(2)"(asp.net button)按钮并且发送一个文件时成功,之后在继续发送另一个文件时,又显示该页
无法显示,我快晕了,出错不要紧,可我搞不清楚,为什么有时候行,而有时候不行呢?头一次碰到这样的问题啊,请赐教
    function addFileControl()
    {
     var str = '<INPUT type="file" NAME="File"></br>'
     document.getElementById('FileCollection').insertAdjacentHTML("beforeEnd",str)
    }
<form id="form1" runat="server" enctype="multipart/form-data">
       <input id="addFile" type="button" value="添加附件" onclick="addFileControl()"/>
        <asp:Label ID="Label4" runat="server"></asp:Label><br />
         <P id="FileCollection">
         <INPUT type="file" name="File"><br>
         </P>
        <input id="Button1" runat="server" type="button" value="发送(1)" disabled="disabled"         onserverclick="Button1_ServerClick"/><br />
       <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="发送(2)" />
    </form>    protected void Button1_ServerClick(object sender, EventArgs e)
    {
        UpFiles();
    }
   protected void Button2_Click(object sender, EventArgs e)
    {
        UpFiles();
    }
    private bool UpFiles()
    {
        //遍历File表单元素
        System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
        //状态信息
        System.Text.StringBuilder strMsg = new System.Text.StringBuilder("上传的文件信息分别为:<hr color=red>");
        int fileCount;
        int filecount = files.Count;
        try
        {
            for (fileCount = 0; fileCount < files.Count; fileCount++)
            {
                //定义访问客户端上传文件的对象
                System.Web.HttpPostedFile postedFile = files[fileCount];
                string fileName, fileExtension;
                //取得上传得文件名
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                if (fileName != String.Empty)
                {
                    //取得文件的扩展名
                    fileExtension = System.IO.Path.GetExtension(fileName);
                    //上传的文件信息
                    strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
                    strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
                    strMsg.Append("上传文件的文件名:" + fileName + "<br>");
                    strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr color=red>");
                    //保存到指定的文件夹
                    postedFile.SaveAs(Server.MapPath("../MailFiles/admin/NormalMail/") + fileName);
                }
            }
            Label4.Text = strMsg.ToString();
            return true;
        }
        catch (System.Exception error)
        {
            Label4.Text = error.Message;
            return false;
        }
    }

解决方案 »

  1.   

    补充一下,Button1 的 disabled="disabled" 去掉,刚发帖的时候忘了去掉了
      

  2.   

    反复试验终于看出点原因了,asp.net默认不能上传大于4M的文件,不能上传EXE文件,这样就有眉目拉
      

  3.   

    默认不能上传4M,可以在webconfig文件里进行设置,我现在没环境不记得了,lovecherry的博客好像有提到最大貌似可以设置200M,但是实际还是传不了这么大,我做的那系统貌似他们至少都可以传100多M
      

  4.   

    在web.config的<system.web>里面加入:<httpRuntime executionTimeout="90" maxRequestLength="4096" />改变maxRequestLength的值的大小就行了,单位是K
      

  5.   

    还在一种情况就是修改IIS里的配置就可以的
      

  6.   

    在IIS6中一般上传文件不能超过4M.如何修改配置使之可以上传大文件呢!
    首先,停止以下服务:
          IIS Admin Service
          World Wide Web Publishing Service
          HTTP SSL
          Simple Mail Transfer Protocol (SMTP)
          FTP Publishing Service
    然后, 编辑:C:\Windows\system32\inesrv\metabase.xml
    找到:ASPMaxRequestEntityAllowed 默认为 204800 (200k),改成需要的例如改为AspMaxRequestEntityAllowed=1024000 !哪么就可以上传1G的文件了
    最后,启动上面被停止的服务,就算完成了!
    解决方法2 
    1. 新建文本文件: 
    Code Content:
    'use VBS 
    set obj1=GetObject("winmgmts:/root/MicrosoftIISv2") 
    set obj2=obj1.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'") 
    'Output default value 
    WScript.Echo "AspMaxRequestEntityAllowed Default Value: " & obj2.AspMaxRequestEntityAllowed 
    'Reset the value 
    obj2.AspMaxRequestEntityAllowed=1024000 ' set to 1mbyte, u can set to other what you want :) 
    ' Save data 
    obj2.Put_() 
    'Output new value 
    WScript.Echo "AspMaxRequestEntityAllowed New Value: " & obj2.AspMaxRequestEntityAllowed
    2. 保存为requestchange.vbs 
    3. 进入命令行, 运行: 
    cscript [path]requestchange.vbs