用Dim myInputFile As New HtmlInputFile()可以多次创建,
指定myInputFile的ID,注意别重复。
再用FindControl("你指定的控件ID")可以找到它们,然后取得值。

解决方案 »

  1.   

    dillontam(阳光游子):你好,很感谢你关注我的问题,但我的意思是要根据文件个数参数来生成上传文件控件,怎么做好呢?
      

  2.   

    有两种比较可行的办法:1、把上传页面做成静态页面,然后用 action="upload.aspx" method="post"把表单post到ASPX页面,再用Request.Files就可以读取传送过来的HttpInputFile了2、在一个页面上进行,那么你可以先用 HttpInputFile File1 = new HttpInputFile();建立一个File,然后通过Controls.Add(File1)把File1添加到页面上。例如你可以:
    <td id="fileplace" runat="server">
    </td>
    ……
    然后用 fileplace.Controls.Add(File1)就可以把File1添加到表格中去了。
    多个File也可以一次Add
      

  3.   

    sqr5(Sqr(5)):你好,你的方法我是知道的,但如何根据传递过来的指定的"文件个数"来动态的生成指定个数的这种HtmlInputfile控件呢
      

  4.   

    你指的那个方法呢?
    如果是第一种,那么用Request.Files[0], Request.Files[1]……就可以依次访问传输过来的文件,而传输页面上用Javascript在td的innerHTML中加上<input type='file' name='filex'>这样的东西就可以了如果是第二种,假如你准备上传 num 个文件,那么可以这样:
    定义一个HtmlInputFile(刚刚写错了,抱歉)数组:static HtmlInputFile SrcFiles[] = new HtmlInputFile[20];然后用一个show()函数:void show() {
        for ( int i=0; i<num; ++i ) {
            fileplace.Controls.Add(SrcFiles[i]);
            fileplace.Controls.Add(new LiteralControl("<br>")); // 添加一个换行符
        }
    }最后在 Page_Load 的时候调用 show() 即可
      

  5.   

    这是一个地一种方法的aspx页面的代码段:protected int total = 0;
    protected static int LIMIT = 1048576;
        
    void Page_Load(Object sender, EventArgs e) {
        String Path = Request.Form["trgpath"], Name = String.Empty;
        bool blank = false;
            
        if ( !Page.IsPostBack )
            for ( int i=0; i<Request.Files.Count; ++i ) {
                if ( Path==String.Empty )
                    Path="/";
       
                try {
                    Name=Request.Files[i].FileName;
                    Name=Name.Substring(Name.LastIndexOf("\\"));
        
                    if ( Request.Files[i].ContentLength>LIMIT )
                        msgfield.InnerHtml+="文件:"+Request.Files[i].FileName+" 超过"+LIMIT.ToString()+"字节!<br>";
                    else {
                        Request.Files[i].SaveAs(Server.MapPath(Path)+Name);
                        ++total;
        
                        msgfield.InnerHtml+="<font color=\"red\">文件:"+Request.Files[i].FileName+" 成功上传!</font><br>";
                        blank = true;
                    }
                }
                catch {
                    if ( Name!=String.Empty ) {
                        msgfield.InnerHtml+="文件:"+Request.Files[i].FileName+" 上传失败...<br>";
                        blank = true;
                    }
                }
            }
                
        if ( blank )
            msgfield.InnerHtml+="<br>";
        if ( total==0 )
            msgfield.InnerHtml+="很遗憾,没有任何文件上传成功。<br>可能是您输入的远程路经“"+Path+"”有误。";
        else
            msgfield.InnerHtml+="成功上传 "+total.ToString()+" 个文件。";
    }
      

  6.   

    for(int i=1;i<=Num;i++)//根据Num上传文件个数参数显示多个文件上传控件
    {
    HtmlInputFile UpLoadFile = new HtmlInputFile();
    UpLoadFile.Name="upload"+i.ToString();
    UpLoadFile.ID="upload"+i.ToString();
    DataGrid1.Controls.Add(UpLoadFile);
    DataGrid1.Controls.Add(new LiteralControl("<br>"));
    }
      

  7.   

    我的方法和blueice811(蓝冰.net)的差不多,
    只不过我用的是VB.NET,我是这么做的:
        '你在页面上拖的table控件
        Protected WithEvents tblUpload As System.Web.UI.WebControls.Table    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            ' 这个过程只显示控件哦,
            Me.CreateFileControls(5, tblUpload, "File")
        End Sub    ' intUploadFileNumber - 你想上传的文件个数
        ' HtmlTable           - 你在页面上拖的table控件
        ' ControlID           - 控件的名字,随便你起啦
        Private Sub CreateFileControls(ByVal intUploadFileNumber As Integer, ByVal HtmlTable As Table, ByVal ControlID As String)        Dim myInputFile As HtmlInputFile
            Dim intCircle As Integer
            Dim htmlTD As TableCell
            Dim htmlTR As TableRow        For intCircle = 1 To intUploadFileNumber            htmlTR = New TableRow()
                htmlTD = New TableCell()
                htmlTD.Text = "文件" & intCircle
                htmlTR.Cells.Add(htmlTD)
                htmlTD = New TableCell()
                myInputFile = New HtmlInputFile()
                myInputFile.ID = ControlID & intCircle
                htmlTD.Controls.Add(myInputFile)
                htmlTR.Cells.Add(htmlTD)
                HtmlTable.Rows.Add(htmlTR)        Next    End Sub
    ' 该程序已调试,有任何问题请与游子联系:)