FileUpload1.HasFile总是返回false

时间:2011-05-01 13:06:09

标签: c# asp.net

我使用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,甚至删除了整个asp:updatePanel,然后我的FileUpload1.HasFile也总是返回false。

3 个答案:

答案 0 :(得分:3)

ASP.NET的“AJAX”事件不支持UpdatePanels中的文件上传。将该触发器更改为PostBackTrigger(导致整页加载)或使用其他内容上传文件。

答案 1 :(得分:1)

为UpdatePanel添加触发器

<Triggers> 
   <asp:PostBackTrigger ControlID="btnUploadFile" /> 
</Triggers> 

这将在单击上传按钮时强制回发。

同时将以下行添加到Page_Load

Page.Form.Attributes.Add("enctype", "multipart/form-data"); 

答案 2 :(得分:0)

我知道这篇文章是否旧,但我发现如果文件为空[0 KB],那么它也将返回false。文件中必须有一些东西才能让.HasFile承认它。