使用asp.net上传文件无法正常工作

时间:2016-05-25 13:51:55

标签: c# html asp.net

我正在尝试使用HTML表单通过ASPX上传文件并尝试在代码隐藏中捕获我的文件。

我的HTMLform现在是

 <form id="form1" enctype="multipart/form-data">
      <input type="file" id="myFile" name="myFile" />
      <asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" Text="Upload" />
 </form>

我的代码隐藏方法:

protected void btnUploadClick(object sender, EventArgs e)
{
    HttpPostedFile file = Request.Files["myFile"];

    //check file was submitted
    if (file != null && file.ContentLength > 0)
    {
        string title = "title";
        string message = "this worked";
        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), title, "alert('" + message + "');", true);
        string fname = Path.GetFileName(file.FileName);
        file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
    }
    else
    {
        string title = "title";
        string message = "nothing happened";
        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), title, "alert('" + message + "');", true);
    }
}

因此,每当我提交HTML表单时,我总会得到警告,没有任何反应。有什么建议吗?

由于

1 个答案:

答案 0 :(得分:1)

您现有的代码实际上要求您的runat="server"元素上有<form>标记,以便您的代码能够实际运行:

<form id="form1" enctype="multipart/form-data" runat="server">
    <!-- Content -->
</form>

母版页和嵌套表单

但根据您的评论,听起来您的母版页中已存在父<form>元素。如果是这种情况,请考虑将enctype="multipart/form-data"属性添加到该父<form>元素:

<!-- This should be your Master Page form -->
<form id="form1" enctype="multipart/form-data" runat="server">
     <!-- Content -->
</form>

然后你应该能够忽略你的内心形式,因为它将属于你的母版页生成的形式。添加后,它应该按预期工作:

enter image description here