问题描述
||
我正在使用ASP.net文件上传控件上传文件。
我的FileUpload1.HasFile总是返回false。
if (FileUpload1.HasFile)
{
DBOperations db = new DBOperations();
try
{
FileUpload1.SaveAs(Server.MapPath(\"~/uploadedImages/\" + db.uploadImage(System.IO.Path.GetExtension(FileUpload1.FileName)) + System.IO.Path.GetExtension(FileUpload1.FileName)));
}
catch (Exception Ex)
{
String he = Ex.Message;
}
}
我正在使用以下ASP.net代码
<asp:UpdatePanel ID=\"fileUpload\" runat=\"server\">
<ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID=\"btnUploadFile\" EventName=\"Click\" />
</Triggers>
<asp:FileUpload ID=\"FileUpload1\" runat=\"server\" />
<asp:Button ID=\"btnUploadFile\" Text=\"Upload File\" runat=\"server\"
onclick=\"btnUploadFile_Click\" />
<br />
<asp:RegularExpressionValidator ID=\"revImage\" ControlTovalidate=\"FileUpload1\" ValidationExpression=\"^.*\\.((j|J)(p|P)(e|E)?(g|G)|(g|G)(i|I)(f|F)|(p|P)(n|N)(g|G))$\" Text=\"Invalid image type\" runat=\"server\" />
</ContentTemplate>
</asp:UpdatePanel>
我什至尝试通过删除AsyncPostBackTrigger甚至通过删除Whole asp:updatePanel来尝试,而且我的FileUpload1.HasFile总是返回false。
解决方法
ASP.NET的\“ AJAX \\”内容不支持直接在UpdatePanels中上传文件。将触发条件更改为“ 2”(会导致整个页面加载),或使用其他方式上传文件。
,为您的UpdatePanel添加触发器
<Triggers>
<asp:PostBackTrigger ControlID=\"btnUploadFile\" />
</Triggers>
单击上载按钮时,这将强制回发。
还将下面的行添加到Page_Load
Page.Form.Attributes.Add(\"enctype\",\"multipart/form-data\");
,我知道这篇文章如果很旧,但是我发现如果文件为空[0 KB],那么它也会返回false。文件中必须有一些内容,以便.HasFile进行确认。