我正在尝试使用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表单时,我总会得到警告,没有任何反应。有什么建议吗?
由于
答案 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>
然后你应该能够忽略你的内心形式,因为它将属于你的母版页生成的形式。添加后,它应该按预期工作: