2017-01-20 18 views
-1

我正在使用input type = file,我正在使用Chrome,所以我會而不是被允許獲取所選文件的文件路徑。它只返回文件名使用C文本框中的文件名獲取文件路徑#

這是我的現有代碼:

string path = Path.GetFullPath(appPerfLog.Value); 

我期待這樣的結果,這樣我可以使用完整的路徑在我的應用程序:

C:\Users\myUsername\Desktop\someFolder\Proactive_Hiring_VW101582_Combo_200users_09210316.csv 

但是,這是我得到什麼,而不是:

C:\Program Files (x86)\IIS Express\Proactive_Hiring_VW101582_Combo_200users_09210316.csv 

如何通過搜索獲得完整路徑我的電腦中的目錄?我需要將它用於StreamReader。由於安全問題,Google Chrome僅返回file name,因此我需要幫助瞭解解決方法/備選方案。

回答

2

沒有這樣的事情作爲上傳文件的完整路徑,或者至少沒有你應該使用的。

當您將文件上傳到Web服務器時,您使用的Web框架將此文件存儲在內存中或臨時目錄中的磁盤上,然後從該文件中將它作爲流訪問以供您的應用程序讀取一次,或用一種方法將其保存到您選擇的目錄。

當您的應用程序部署在Web服務器上時,您試圖執行的操作不會執行,因爲不能保證該文件甚至會與客戶端上使用的名稱一起出現。衆所周知,客戶端上名爲D:\Temp\Foo.txt的文件在服務器上被命名爲C:\Windows\Temp\asdfg123.tmp

您將需要爲您正在使用的Web應用程序框架使用適當的API。對於ASP.NET FileUpload控件,您將不得不使用FileUpload.SaveAs(string filename)讓ASP.NET將文件寫入您選擇的路徑。之後,您可以使用filename從您的代碼中讀取該文件。

+0

換句話說,我只需要放棄'input type = file'並使用** FileUpload **控件呢?只是爲了澄清。 @CodeCaster – JPaulPunzalan

+0

不,我告訴你需要使用適當的API。你可以使用文件輸入,但是如何處理文件取決於你如何閱讀它。如果是通過'Request.Files []',那麼將返回一個'HttpPostedFile',它也有一個'SaveAs()'方法。 – CodeCaster

+0

爲了澄清,我不**需要將文件上傳到Web服務器。我需要完整的路徑來讀取CSV文件並對其結果值進行計算。有沒有解決方案?謝謝! – JPaulPunzalan