FileUpload1.HasFile всегда возвращает false

#c# #asp.net

#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.

Комментарии:

1. Когда вы удаляете UpdatePanel , как вы отправляете свою форму?

Ответ №1:

ASP.NET «AJAX» не поддерживает загрузку файлов в UpdatePanels из коробки. Измените этот триггер на PostBackTrigger (который вызывает полную загрузку страницы) или используйте что-то другое для загрузки файла.

Комментарии:

1. должен ли я использовать что-то такого типа asp.net/ajax/ajaxcontroltoolkit/samples/asyncfileupload /…

2. @Adam: Это один из примеров того, что вы могли бы использовать, да.

Ответ №2:

Добавьте триггер для вашей панели обновления

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

Это приведет к принудительной отправке при нажатии кнопки загрузки.

Также добавьте строку ниже в Page_Load

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

Ответ №3:

Я знаю, что это сообщение старое, но я обнаружил, что если файл пуст [0 КБ], то он также вернет false. В файле должно быть что-то для .Есть файл, подтверждающий это.