2013-03-07 48 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) 是假的