Dynamic 如何使用ASP.NET从动态创建的FileUpload控件上载文件?

Dynamic 如何使用ASP.NET从动态创建的FileUpload控件上载文件?,dynamic,file-upload,viewstate,Dynamic,File Upload,Viewstate,在下面附上的代码中,我试图通过ASP.NET上传一个文件。我正在动态创建FileUpload控件,这意味着它不在我的ViewState中,这(我认为)意味着我不能使用该控件上载文件,除非我使用我不想使用的老式多部分/表单数据方式。我需要能够允许用户创建多个FileUpload字段,然后当他们单击Upload File(s)按钮时,它将遍历所有FileUpload字段并将其上载到服务器 我相信有一种方法可以做到这一点,我只是没有想到-蒂亚 <%@ Page Language="VB" %&g

在下面附上的代码中,我试图通过ASP.NET上传一个文件。我正在动态创建FileUpload控件,这意味着它不在我的ViewState中,这(我认为)意味着我不能使用该控件上载文件,除非我使用我不想使用的老式多部分/表单数据方式。我需要能够允许用户创建多个FileUpload字段,然后当他们单击Upload File(s)按钮时,它将遍历所有FileUpload字段并将其上载到服务器

我相信有一种方法可以做到这一点,我只是没有想到-蒂亚

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim fup As New FileUpload()
        fup.ID = "FileUpload1"

        PlaceHolder1.Controls.Add(fup)
    End Sub

    Protected Sub btnUploadFile_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        ' HOW DO I GET THE FILE THAT WAS SELECTED IN THE DYNAMICALLY CREATE FILEUPLOAD CONTROL?
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="padding:13px">
        <asp:Button ID="btnAdd" runat="server" Text="Add FileUpload Control" OnClick="btnAdd_Click" />
        <br /><br />
        <asp:PlaceHolder ID="PlaceHolder1" runat="server" />
        <br /><br />
        <asp:Button ID="btnUploadFile" runat="server" Text="Upload File(s)" OnClick="btnUploadFile_Click" />
    </div>
    </form>
</body>
</html>

受保护的子btnAdd_单击(ByVal sender作为对象,ByVal e作为System.EventArgs)
Dim fup作为新文件上载()
fup.ID=“文件上传1”
占位符1.控件.添加(fup)
端接头
受保护的子btnUploadFile_单击(ByVal sender作为对象,ByVal e作为System.EventArgs)
'如何获取在动态创建文件上载控件中选择的文件?
端接头





您可以使用Request.Files

它包含作为HttpPostedFile对象的上载文件

foreach(HttpPostedFile file in Request.Files)
  file.SaveAs(...);

您可以使用Request.Files

它包含作为HttpPostedFile对象的上载文件

foreach(HttpPostedFile file in Request.Files)
  file.SaveAs(...);

问题是FileUpload控件已锁定FileName参数,使其无法以编程方式设置。这样做的原因是为了保护用户不受恶意脚本的影响,该脚本决定将系统文件上载到服务器,而不是用户想要的


在上述情况下,您将无法使用FileUpload控件,您需要寻找一种替代方法。

问题是FileUpload控件已锁定FileName参数,使其无法以编程方式设置。这样做的原因是为了保护用户不受恶意脚本的影响,该脚本决定将系统文件上载到服务器,而不是用户想要的


在上述情况下,您将无法使用FileUpload控件,您需要寻找一种替代方法。

以下是上述方法的较长版本:C#

print(“HttpFileCollection UploadedFiles=Request.Files;
HttpPostedFile UserPostedFile;
int UploadFileCount=UploadedFiles.Count;
如果(UploadFileCount>=1)
{
对于(int i=0;i
这是上面的一个较长版本:C#

print(“HttpFileCollection UploadedFiles=Request.Files;
HttpPostedFile UserPostedFile;
int UploadFileCount=UploadedFiles.Count;
如果(UploadFileCount>=1)
{
对于(int i=0;i