2013-03-07 65 views
0

在我的应用程序必须让用户上传文件到系统中,我有这样的代码:ASP.NET文件上传控制File.Exists始终返回false

<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 
       } 
      } 
     } 
    } 

可能是什么原因?我完全被这个困惑了。我还提到,使用本地主机时,我的文件存在,并成功上传。非常感谢!

+2

您需要首先保存文件... .NET框架不会为您做到这一点。 – 2013-03-07 13:40:20

+0

谢谢,你救了我的一天!现在可以工作了! :) – Crista23 2013-03-07 14:07:00

+0

它检查文件是否存在于服务器而不是客户端 – Gherbas 2013-03-07 15:05:15

回答

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>

当用户点击复选框的事件运行,我检查上传文件并保存它。但是总是当它涉及到检查答案 如果(my_Uld.HasFile) 是假的