如何在java中获取浏览文件路径

时间:2013-01-15 06:13:05

标签: java zk

我想获得浏览文件路径。 我试过这样的

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正在从eclipse中提供路径。 如果我的文件在c:// doc / abc中,那么它应该给出路径为c://doc/abc/myfile.txt

由于

3 个答案:

答案 0 :(得分:0)

如果文件位于客户端(浏览器所在的位置),则通常的文件上传器可能无法实现。 This question有一些替代方案可以解决您遇到的完全相同的问题

如果文件在您的服务器上,请尝试file.getCanonicalPath()。这应该给你整个路径。

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

顺便说一句,您可以使用System.getProperty("user.dir"))获取启动程序的目录,即eclipse目录。但是,如果你需要的只是文件的路径,我不建议使用它。

答案 1 :(得分:0)

如果您将media.getName()打印到日志中,您很可能会发现它只是文件名,没有路径:myfile.txt

这是因为浏览器有多少信息与他们发送的文件以及上传的字节有关。大多数浏览器只给你一个没有路径的名字。试试opera,你应该得到完整的文件路径。

答案 2 :(得分:0)

如果我理解正确,您希望源文件在客户端上的位置而不是服务器上文件的位置?

出于安全考虑,这是不可能的,抱歉。

您会在StackOverflow和其他地方找到关于此问题的大量讨论(有时会参考某些浏览器对此安全功能的实现的'fakepath' symptom

没有太多细节,这个安全功能的推理非常简单;没有网站需要(阅读:能够)找到有关用户文件系统的任何信息。因此,当文件上传到服务器时,只应发送文件数据。

从技术上讲,它可能在一些较旧的浏览器中(例如:我认为是IE6),但在这一点上是一种非常普遍的安全功能,你可能会依赖于这些信息。