2009-08-31 43 views
0

如何使用asp.net上傳控件獲取FullName與FireFox中的路徑信息?如何使用asp.net上傳控件獲取FullName與FireFox中的路徑信息?

與IE瀏覽器,我可以使用asp.net上傳控件得到完整路徑信息的文件的全名:

<asp:FileUpload ID="FileUpload1" runat="server" /> 

在IE瀏覽器中,FileUpload1.PostedFile.FileName是E:\爲IProject \ demo1的\ abc.jpg的

但在Firefox中,FileUpload1.PostedFile.FileName是abc.jpg的

我怎樣才能上傳文件的全路徑信息文件名時,我使用Firefox?

我想使用的文件的路徑信息,這樣我就可以自動上傳文件到同一文件夾。

或者,我可以使用JavaScript來獲取有關uploadfile領域的的onchange()事件中的路徑信息?

+0

我使用它僅上傳自己的文件。所以安全問題不是問題。 – Mike108 2009-08-31 15:00:32

回答

1

你不行。這是一個慎重的安全措施。

其實你真的不能依靠任何特定的瀏覽器,給你任何合理的作爲文件名,所以這是提示用戶輸入一個名稱,在一個單獨的輸入控制使用一個好主意。通過讀取文件上傳字段onchange的值,可以使用一些JavaScript使其缺省爲可用的文件名,並將最後一個段的帖子'/'或'\'(如果有的話)複製到名稱字段。

例如重新添加評論:

<input type="text" name="filename" id="filename" /> 
<input type="file" name="upload" id="upload" /> 
<script type="text/javascript"> 
    document.getElementById('upload').onchange= function() { 
     var leafname= this.value.split('/').pop().split('\\').pop(); 
     if (leafname!='') 
      document.getElementById('filename').value= leafname; 
    }; 
</script> 
+0

如何使用文件上傳字段的onchange值來獲取路徑信息? JavaScript的? – Mike108 2009-08-31 13:07:10

+0

增加了獲取文件名的例子。你仍然無法獲得完整的路徑信息 - 正如我所說的,這是故意不可能的。 – bobince 2009-08-31 13:26:11

+0

@bobince,你的javascript代碼在FireFox中沒有路徑信息的文件名。但我想獲得路徑信息的文件名。 – Mike108 2009-08-31 14:56:49

0

Firefox不會讓你知道的信息。這樣做可以讓服務器對客戶端不需要的額外知識(安全風險)。

老實說,你爲什麼需要它?該文件將被上傳到您的服務器,對吧?

+0

我想使用路徑,所以我可以自動將文件上傳到同一個文件夾。 – Mike108 2009-08-31 13:03:36

+0

請注意,使用用戶提交的文件和目錄名稱是非常危險的。審查路徑名以確保安全性比您想象的要困難得多;更好地在內部使用自己的文件名。 – bobince 2009-08-31 13:25:41

+0

我使用它僅爲我自己上傳文件。所以安全問題不是問題。 – Mike108 2009-08-31 15:04:48

0

我認爲這是一個很好的做法不發送的全路徑名,它會引發隱私和安全問題。整個路徑名稱說明了目錄結構太多,可以被攻擊者使用。也許你無法在Firefox中獲得完整的路徑。

0

但是,你可以想像,我已經寫了一個簽名的Java小程序,可以在片段發送任意大小的文件,在Ajax回發。它和IE完全一樣。 FF失敗。唯一的方法是告訴FF用戶,我的網站只能在IE瀏覽器中查看。

相關問題