2013-01-15 74 views
-1

我想獲取瀏覽的文件路徑。 我嘗試喜歡它如何在java中獲取瀏覽的文件路徑

Object objUploadEvent = ctx.getTriggerEvent(); 
     if (objUploadEvent != null && (objUploadEvent instanceof UploadEvent)) { 
      upEvent = (UploadEvent) objUploadEvent; 
     } 
     if (upEvent != null) { 
      Media media = upEvent.getMedia(); 
      File file=new File(media.getName()); 
      this.path = file.getAbsolutePath(); 
     } 

但getAbsolutePath從日食給路徑。 說,如果我的文件是在C:// DOC/ABC那麼它應該給路徑爲c:如果該文件是在客戶端上//doc/abc/myfile.txt

感謝

+0

使用.getPath()請參閱:http://stackoverflow.com/a/1099399/1617189 –

回答

0

(其中瀏覽器是),這可能不適用於通常的文件上傳。 This question有一些替代方案可以解決您面臨的完全相同的問題

如果文件在您的服務器上,請嘗試file.getCanonicalPath()。這應該給你整個路徑。

另見:What's the difference between getPath(), getAbsolutePath(), and getCanonicalPath() in Java?

順便說一句,你可以從你的程序已經開始,eclipse目錄,使用System.getProperty("user.dir"))目錄。但是,如果你需要的只是一個文件的路徑,我不建議使用它。

+0

不,這兩個規範和nad絕對給予相同的C:\ softwares \ eclipse3.5 \ eclipse3.5 \ AMANDA_docx – Romi

+0

我以爲你想要在C:\開始的路徑。你在尋找相對路徑嗎? – Navin

+0

@Romi順便問一下,你確定該文件存在於你的文件系統上嗎?我問,因爲你只用它的名字創建它。 – Navin

0

如果打印出來的media.getName()你的日誌,你將最有可能看到,它只是文件名,不路徑:myfile.txt

這是因爲它是由瀏覽器有關文件的多少信息,他們與上傳的字節一起發送。大多數瀏覽器只是給你一個沒有路徑的名字。嘗試歌劇,那裏你應該得到完整的文件路徑。

+0

是的,您是對的。在media.getName()中只獲取myfile.txt。但我想在所有瀏覽器中獲得路徑,不僅在歌劇 – Romi

+0

中,你不會得到它:)除非你在一個單獨的表單域中發送它 – rompetroll

0

如果我理解正確,您需要在客戶端上的源文件的位置,而不是服務器上文件的位置?

這是不可能出於安全原因,對不起。

你會發現很多的討論,這個在計算器上,並在參考了一些瀏覽器的實現此安全功能的'fakepath' symptom其他地方(有時。

沒有進入太多細節,此安全特性的理由是非常簡單的;沒有網站需要(閱讀:能夠)找出有關用戶文件系統的任何東西,因此,當一個文件上傳到服務器時,只有文件數據應該發送

從技術上講,在一些較舊的瀏覽器中(例如:我相信IE6)是可能的,但在這一點上它是一個非常普遍的安全功能,你會因爲依賴 此信息。

相關問題