在我的应用程序中,我必须让用户将文件上传到系统中,我有以下代码:
<asp:FileUpload ID="CSVFileUpload" runat="server" CssClass="TextInput" Width="250" />
<asp:LinkButton ID="lbnUploadCSVFile" runat="server" CssClass="MainLinkWithSpaces" OnClick="lbnUploadCSVFile_Click">Upload CSV file</asp:LinkButton>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" CssClass="warning" runat="server" ControlToValidate="CSVFileUpload" ErrorMessage="Please Upload a File!"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" CssClass="warning" runat="server" ControlToValidate="CSVFileUpload"
ErrorMessage="Please make sure you upload a csv file!" ValidationExpression=".*\.csv$"></asp:RegularExpressionValidator>
<asp:Label ID="lblUploadError" Runat="server" Visible="True" CssClass="warning" Text=""></asp:Label>
在后面的代码中,我总是检查上传的文件是否存在,但我的问题是File.Exists总是返回false,尽管该文件存在于指定位置的磁盘上。
protected void lbnUploadCSVFile_Click(object sender, EventArgs e)
{
lblUploadError.Text = "";
if (CSVFileUpload.HasFile)
{
if (CSVFileUpload.FileName.ToString() != String.Empty)
{
// make sure the uploaded file exists
if(File.Exists(CSVFileUpload.FileName))
{
// upload file
}
}
}
}
可能是什么原因?我完全被这个绊倒了。我还提到当使用localhost时我的文件存在并且它成功上传。非常感谢!
答案 0 :(得分:1)
我有同样的问题。但我在其他页面中使用了相同的代码,但它运行良好,但在此页面中它不起作用。有一点不同。 在这里,我在HTML表格中使用我的上传控件,它们都在aspx面板中。 而且我也像以前一样添加了触发器。 当我将上传控件放在桌子外(在面板中)时,它可以工作。
<asp:Panel ID="Topic_Pnl" runat="server">
<table>
<tr>
<td colspan="2" height="20"> <asp:FileUpload ID="my_Uld" runat="server" TabIndex="15" />
<asp:CheckBox ID="myChB" runat="server" AutoPostBack="True" OnCheckedChanged="myChB_CheckedChanged" TabIndex="20" Text="ok" />
</td>
</tr>
</table>
</panel>
当用户点击复选框时,事件运行,我检查上传的文件并保存。但总是在检查答案时 if(my_Uld.HasFile) 是假的