2011-04-17 124 views
0

我想從客戶端的PC讀取excel文件。我正在使用ASP文件上傳控件。當我試圖讀取文件時,它試圖打開在錯誤的文件夾中選擇的文件。該文件位於D:驅動器上,正試圖在C:驅動器中打開它。ASP.Net奇怪的行爲與文件上傳控制

下面就是我突入功能:

fpc.AddSpecs(ref model, this.fuSpecs.PostedFile.FileName.ToString()); 

以下是該函數的連接字符串:

 switch (postedfile.Substring(postedfile.LastIndexOf('.') + 1)) 
     { 
      case "xls": 
       connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + postedfile + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\""; 
       break; 
      case "xlsx": 
       connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + postedfile + ";Extended Properties=Excel 12.0;HDR=Yes;IMEX=2"; 
       break; 
     } 

可能是什麼問題呢?

+0

您是否考慮檢查postingFile變量的值.. – 2011-04-17 23:18:28

+0

是,值只是文件名。沒有路徑 – mattgcon 2011-04-17 23:20:15

+0

爲什麼客戶端路徑是相關的?你有文件名和內容 - 將它保存在你的服務器中的任何地方...... – liron 2011-04-18 07:13:16

回答

1

1 - 將文件保存在服務器上:

string uploadedFilePath = "URL" + System.IO.Path.GetFilename(fileUpload1.FileName)); 
fileUpload1.SaveAs(uploadedFilePath); 

2 - 將您的connString變量的值:

switch (postedfile.Substring(postedfile.LastIndexOf('.') + 1))   
{    
    case "xls":     
     connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + uploadedFilePath + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\"";     
     break;    
    case "xlsx":     
     connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + uploadedFilePath + ";Extended Properties=Excel 12.0;HDR=Yes;IMEX=2";     
     break;   
} 

檢查以下鏈接:

http://weblogs.asp.net/ashicmahtab/archive/2009/05/20/fileupload-control-doesn-t-give-full-path-help.aspx