2011-05-01 185 views
2

我使用ASP.net文件上傳控件上傳文件。 我的FileUpload1.HasFile總是返回false。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; 
      } 
     } 

我使用甚至消除AsyncPostBackTrigger,甚至通過刪除所有ASP以下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> 

我曾嘗試:UpdatePanel的那麼也是我FileUpload1.HasFile始終返回false。

+0

當您刪除'UpdatePanel'時,如何提交表單? – 2011-05-01 13:09:54

回答

3

ASP.NET的「AJAX」不支持立即在UpdatePanel中進行文件上傳。將該觸發器更改爲PostBackTrigger(導致整頁加載)或使用其他內容上傳文件。

+0

我應該使用這種類型的東西:http://www.asp.net/ajax/ajaxcontroltoolkit/samples/asyncfileupload/asyncfileupload.aspx – Abhi 2011-05-01 13:10:12

+0

@Adam:這是您可以使用的一個例子,是的。 – 2011-05-01 13:11:13

1

添加觸發器爲您的UpdatePanel

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

這將迫使回傳被點擊上傳按鈕時。

另外補充線下到Page_Load

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

我知道這個帖子,如果老了,但我發現,如果該文件是空的[0 KB]那麼它將返回false也是如此。文件中必須有一些東西以便.HasFile來確認它。