2014-06-10 37 views
0

這是怎麼了creatinga臨時文件ASP.NET MVC:Path.Combine是生產2分的結果,引起異常

string myFilePath = Path.Combine(tempFileLocation, myFileName); 
nh.SaveToFile(myFilePath); 

return myFileName; 

,因爲我不希望我回來只是文件名顯示路徑。但後來,如果用戶決定要下載的文件,我想訪問該文件是這樣的:

string myFilePath = Path.Combine(tempFileLocation, myFileName); 
FileStream fs = System.IO.File.OpenRead(myFilePath); 

我得到一個異常:找不到路徑的一部分。

當我比較兩個字符串,這是我所看到的:

C:\\TempFolder\\myFile.xls 

C:\TempFolder\myFile.xls 

爲什麼會出現兩種不同的字符串,而用同樣的方法?

此外,我不知道這些信息是否有幫助。第一次,我在C#類助手中使用Path.Combine。然而,第二,我在控制器內部使用它。

感謝您的幫助。

+0

請包括NH是什麼。以及你在哪裏得到你正在比較的兩個字符串。顯然,它們不是直接來自'Path.Combine()'。或者,如果它們都直接來自'Path.Combine',那麼還包括如何在兩個Actions中檢索tempFileLocation'。 – arserbin3

回答

0

我不確定這是否會解決您的問題,但您可以嘗試在沒有Path.Combine的情況下執行此操作。

像這樣:

 string myFilePath = tempFileLocation.ToString() + 
     System.IO.Path.DirectorySeparatorChar + myFileName.ToString(); 

     FileStream fs = System.IO.File.OpenRead(myFilePath); 
+0

'System.IO.Path.DirectorySeparatorChar'仍然只添加一個反斜槓,這仍然會導致異常。 – Richard77

+0

如果你使用兩個不同的功能,你可以添加更多的分隔符:)你將不得不拆分其他字符串,但要添加其他字符串... –