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);
}
请帮。
我发现如果文件为空[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",谁知道你的代码在做什么。
如果发生类似这样的事情,上传控件将失去其状态
- 事件某处设置了addditreport。可见= true
- 用户使用文件上传控件
- 事件某处设置了addditreport。可见= false
- 用户点击保存按钮
- 上传控件失去状态