FileUpload控件HasFile失败,但file实际上是可用的

本文关键字:实际上 file 控件 HasFile 失败 FileUpload | 更新日期: 2023-09-27 17:55:04

我的文件上传控件不是UpdatePanel的一部分。它就在asp:panel中。当我通过调试器一步,我看到FileName属性正确填充,FileBytes, postdfile等,但HasFile单独是假的。我在我的智慧结束试图弄清楚,因为FileName属性有预期的值,但HasFile是假的。这个解决方案也没有帮助!

<asp:Panel id="AddEditReport" runat="server" Visible="false" style= "display:inline;" >
 <asp:HiddenField ID="ReportField" runat="server" Value="Report" />
 <table width="100%">
      <tr>
        <td>Title:</td>
        <td><asp:TextBox ID="TextBox_Report" runat="server" Width="342px"></asp:TextBox></td>
      </tr>
      <tr>
          <td valign="top"><asp:Label ID="Description_Label" runat="server" Text="Header Description" /></td>
          <td><asp:TextBox  TextMode="MultiLine" ID="Description" runat="server" Width="342px" height="250px" AutoPostBack="false"/></td>
      </tr>
      <tr>
        <td>
            <asp:Label ID="DisplayOrder_Label" runat="server" Text="Display Order" />
        </td>
        <td>
            <asp:TextBox ID="TextBox_DisplayOrder" runat="server" Width="42px" MaxLength="2" AutoPostBack="false"/>            
        </td>          
      </tr>
      <tr>
          <td><asp:Label runat="server" ID="FileUploader_Label" Text="Copy of file: "/></td>
          <td><asp:FileUpload ID="FileUpload_Report" runat="server"/></td>
      </tr>
 </table></asp:Panel>
 <asp:Panel ID="Button" runat="server">
    <asp:Button id="Save" runat="server" Text="Save" OnClick="SaveButton_clicked"/>
    <asp:button id="Back" runat="server" Text="Back" OnClick="BackButton_clicked" UseSubmitBehavior="False"></asp:button><%
int id;
if (!string.IsNullOrEmpty(Request.QueryString[QuerystringID]))
{
    id = int.Parse(Request.QueryString[QuerystringID]);
    if (string.IsNullOrEmpty(ReportRepository.GetReportById(id).FilePath))
    {
%>      <a  onclick="return confirm('Are you sure you wish to delete this heading?')"  href="FileUpload.aspx?id=<%=id.ToString()%>&delete=true" target="_self">
         <input type="button" value="Delete Heading"/>
    </a>
 <% 
    }
   }
  %></asp:Panel>

这是我的整个页面。

HasFile失败的代码片段:

if (FileUpload_Report.HasFile)/*Fails always*/
{
    FileInfo fileInfo = new FileInfo(FileUpload_Report.FileName);
    // First add the report to get the ID.
    ReportRepository.Add(report);
    // Then update with the created filepath.
    report.FilePath = PathRoot + @"/" + GetFilename(report) + fileInfo.Extension;
    // Update the old report with a deleteddate.
    ReportRepository.Update(oldReport);
    ReportRepository.Update(report);
    FileUpload_Report.SaveAs(Server.MapPath(PathRoot) + "''" + GetFilename(report) + fileInfo.Extension);
}

请帮。

FileUpload控件HasFile失败,但file实际上是可用的

我发现如果文件为空[0 KB],那么它也将返回false。文件中必须有一些东西才能让。hasfile确认它

试试下面的方法,让我知道它是否有效:

if (FileUpload_Report.PostedFile == null || string.IsNullOrEmpty(FileUpload_Report.PostedFile.FileName) || FileUpload_Report.PostedFile.InputStream == null) { 
   // File Doesn't Exist
} Else {
   // File Exist
}

确保在SaveButton_clicked被执行之前addditreport面板是可见的。我只是说,因为我注意到你已经开始在可见="false",谁知道你的代码在做什么。

如果发生类似这样的事情,上传控件将失去其状态

  1. 事件某处设置了addditreport。可见= true
  2. 用户使用文件上传控件
  3. 事件某处设置了addditreport。可见= false
  4. 用户点击保存按钮
  5. 上传控件失去状态