2013-01-04 79 views
-1

我有.aspx頁面上的文件上傳控件,我正在提取基本文件信息。要求是我需要將所選文件的絕對路徑從客戶機保存到數據庫。ASP.NET:獲取客戶端機器上的文件路徑(任何可能的解決方案/解決方法?)

我已閱讀本網站以及其他地方的本質ASP.NET出於安全原因不允許從客戶端機器讀取信息。

但我想知道是否有解決這個問題使用js或東西來獲得絕對路徑,然後將其傳遞給asp.net變量?

+0

爲什麼上傳文件到服務器後需要絕對路徑? – Cdeez

+0

@Mithrandir - 我相信這個問題的有趣部分不是「如何發送給服務器」,而是「如何持續地從用戶那裏竊取這些信息」。 –

+0

@TimSchmelter,我想保存路徑,以便當用戶回到站點上時,在上傳的文件列表中,他們可以看到文件位於其機器上的位置。 – user1889838

回答

3

對於這個限制你無法做任何合理的事情。

用戶機器上的任何完全可信的代碼都可以做到這一點。所以你的目標是說服用戶安裝一些能夠爲你提供信息的東西。

對於Windows(都需要某種形式的安裝目錄):

  • ActiveX控件
  • 本地EXE
  • 本地安裝的管理EXE
  • 對IE本地安裝HTA僅

我相信幾乎所有的平臺都可以通過同樣痛苦的安裝要求來滿足這些需求。

+0

謝謝Alexei Levenkov。你能提供你的建議方法的鏈接嗎? – user1889838

2

您無法獲取客戶端機器路徑。爲了安全起見,瀏覽器不會發布完整文件的路徑。

1

您無法獲取文件的完整路徑。 爲了安全起見,瀏覽器不會發布完整文件的路徑。

嘗試在java腳本中使用下面的代碼。

lbltext.Text = FileUpload1.PostedFile.FileName 
+0

檢查答案並添加評論,如果工作 – Himanshu

0

瀏覽器發送文件,但不完整的文件路徑,這樣檢索文件的路徑,你通過javascript功能做在客戶端:

<script type="text/javascript"> 
function OnSubmitHandler(myForm) 
{ 
    var fileUpload = document.getElementById('<% = FileUpload1.ClientID %>'); 


    myForm.action = myForm.action + "?FilePath=" + fileUpload.value; 


    return true; 


} 
</script> 


<form id="Form1" method="post" runat="server" onsubmit="return OnSubmitHandler(this);"> 
... 
<asp:FileUpload id="FileUpload1" .... /> 


... 
</form> 

如果你不想通過查詢發送一個文件路徑字符串,你可以創建隱藏的表單字段,所以文件路徑將通過郵件發送。

相關問題