2017-08-16 72 views
0

我們有一個應用程序託管在位於另一個國家的其他服務器上,我打算使用來自不同國家的應用程序,同時使用該應用程序我想檢查用戶的機器本地'C'驅動器特定路徑是否有該文件是是否存在。如何檢查文件是否存在從C#或Javascript?

如何從C#或Javascript實現此目的?

從C#

byte[] contents = null; 
if (File.Exists("C:\Program Files (x86)\Fruit\fruitList.txt")) 
    { 
     using (FileStream fileStream = File.OpenRead(scannedFile)) 
     { 
       contents = new byte[fileStream.Length]; 
     } 
    } 

但提到 'C' 驅動器路徑僅在IIS服務器搜索(我們主辦的應用程序)。但我想檢查客戶端(用戶)的機器。

我在Javascript中找不到代碼。

請幫助我,達到預期效果。

謝謝。

回答

6

你試圖做的事情是不容易的。由於出於安全原因阻止訪問用戶的客戶機,JS將無法工作。 C#在服務器上運行時根本無法訪問客戶端。

另一種方法是讓用戶使用<input type="file" />手動從他們的機器中選擇所需的文件,然後將該文件上傳到您的服務器以進行處理和驗證。

如果你不能寫一個用戶在他們的機器上安裝的程序,該程序爲你的網站提供了從客戶端檢索信息的方法 - 但這是一個令人難以置信的過程。

+0

感謝您的回覆,我的方案是,如果該文件不存在於客戶端機器中,我將要求客戶端下載我的安裝程序。我如何實現這種情況,請問你能提出一些建議嗎? – Cegone

+0

上面我的回答中有什麼不清楚嗎? –

+0

我很清楚你的答案,我無法使用作爲我的場景,所以我要求你提供一個建議來實現我的場景。 – Cegone

0

您無法從服務器端訪問客戶端驅動器,將是一個主要的安全問題。您將不得不要求客戶告訴您他們是否有該文件或找到其他解決方法。這也是它在IIS服務器上搜索的原因,因爲它認爲你正在尋找本地文件。希望這可以幫助!

0

在網站(C#)中,您只能訪問服務器的文件,因爲執行應用程序的機器是正確的。

爲JavaScript誰是在客戶端執行,因爲客戶端文件訪問不會被設計允許這是不可能的,看看這篇文章:

Javascript Security

如果你需要這個,你要開發一個應用程序安裝在客戶端的PC上並從這個應用程序連接服務器,這是唯一的方法,您將永遠不會訪問自瀏覽器以來的客戶端文件。

0

用這種方式

C#

var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); 

獲取從FILESTREAM文件擴展名變量

的Javascript:

<input id="File" type="file"/> 
$("#File")[0].files[0].name.split(".") 
+0

您似乎誤解了OP的要求及其固有的缺陷 –

相關問題