我想弄成就像网页上传文件那样点要上传几个文件就生成几个fileupload    protected void Button3_Click(object sender, EventArgs e)
    {
        for (int i=0; i < Convert.ToInt32( DropDownList1.SelectedValue ); i++)
        {
            FileUpload file = new FileUpload();
            file.ID = "file" + i.ToString();
            Up.Controls.Add(file);
        }
    }然后点确定后将生成的全部上传,在一个Buttonclick调用UPload方法
 protected void Button2_Click1(object sender, EventArgs e)
    {
        for (int i = 0; i < Convert.ToInt32(DropDownList1.SelectedValue); i++)
        {
            //Upload((FileUpload)Up.FindControl("file"+i.ToString()));
        }
    }
    private void Upload(FileUpload file)
    {
        if(file.PostedFile != null)
        {
            string photoName1 = file.PostedFile.FileName;
            int i = photoName1.LastIndexOf("."); 
            string newext = photoName1.Substring(i); 
            if (newext == ".gif" && newext == ".jpg" && newext == ".jpeg" && newext == ".bmp" && newext == ".png")
            {
                DateTime now = DateTime.Now;
                string photoName2 = now.Millisecond.ToString() + "_" + file.PostedFile.ContentLength.ToString() + newext;
                file.PostedFile.SaveAs(Server.MapPath("~/ADImages/" + photoName2));
                string Url = "~/ADImages/" + photoName2;
            }
            else 
             JScript.Alert("文件格式不正确!");
        }
        else
        {
             JScript.Alert("无可上传文件");
        }    }
大家看看有什么问题  或者用别的方法如何实现?

解决方案 »

  1.   

    在ASP.NET中实现多文件上传 
    http://dotnet.aspx.cc/article/58ea3515-36f2-4fd9-ac89-eaf49f59816c/read.aspx
      

  2.   

       
            <script type="text/javascript">
            function AddNewFile()
            {
            var inel=document.createElement("input","filename1");
            inel.type="file";
            //inel.name="上传控件名称";
            var pObj=document.getElementById("TestInserFileDiv");
            pObj.appendChild(inel);
            }
              </script>
    <div id="TestInserFileDiv">
        <input type="file" name="file1" /> 
        <input type="file" name="file2" /></div>
        <input type="button" id="btn1" name="btn1" value="增加上传文件" onclick="AddNewFile()" />
    <asp:Button ID="Button1" runat="server" Text="Button"  OnClick="Button1_Click"/>通过Request.Files来获取客户端上传的文件
     HttpFileCollection fc = Request.Files;
            for (int i = 0; i < fc.Count; i++)
            {
                HttpPostedFile file = fc[i];
                string filename = file.FileName;
                //file.SaveAs(Server.MapPath("~/upload/")...);
                //保存路径自己设置        }
      

  3.   

    现在报错未将对象引用的实例这个要怎么解决?
    ---------------------------
    因为啊Button3_Click(object sender, EventArgs e)
    中创建的file控件,在你Button2_Click1(object sender, EventArgs e)之后全部刷没了在执行Button2_Click1(object sender, EventArgs e)之前他会先调用page_load
    ((FileUpload)Up.FindControl("file"+i.ToString()根本是找不到你要的控件所以你用ajax调用上传的方法就可以解决问题
      

  4.   

    [email protected]  谢谢了
      

  5.   

    如果用我写的这个
    可是没怎么接触过ajax要如何调用?
      

  6.   

    你只能先把这些动态生成的控件装入内存中比如session,application,static,cache