2013-01-15 52 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)是可能的,但在这一点上它是一个非常普遍的安全功能,你会因为依赖 此信息。

相关问题