我想获得浏览文件路径。 我试过这样的
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
由于
答案 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),但在这一点上是一种非常普遍的安全功能,你可能会依赖于这些信息。