-1

我想获得一个浏览的文件路径。我试过喜欢它

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

谢谢

4

3 回答 3

0

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

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

于 2013-01-15T06:21:10.923 回答
0

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

出于安全原因,这是不可能的,抱歉。

您会在 StackOverflow 和其他地方找到大量关于此的讨论(有时是指某些浏览器实现此安全功能的“假路径”症状

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

从技术上讲,这在一些较旧的浏览器中是可能的(例如:我相信 IE6),但在这一点上它是一个非常普遍的安全功能,你将注定要依赖这些信息。

于 2013-01-15T11:05:44.690 回答
0

如果文件在客户端(浏览器所在的位置)上,通常的文件上传器可能无法做到这一点。这个问题有一些替代方案可以解决您面临的完全相同的问题

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

另请参阅:Java 中的 getPath()、getAbsolutePath() 和 getCanonicalPath() 有什么区别?

顺便说一句,您可以使用System.getProperty("user.dir")). 但是,如果您只需要文件的路径,我不建议使用它。

于 2013-01-15T06:16:16.030 回答