获取JSF中所选文件的完整路径

时间:2013-09-16 08:38:35

标签: jsf jsf-2.2

我需要一个允许用户浏览和选择特定文件的JSF按钮,然后我需要我的程序来检索文件的完整路径。

当用户从服务器本身运行客户端部分(即浏览到托管Web应用程序的同一服务器中的文件)时,需要此功能。如果用户从另一台机器发送请求,那么上传文件就足够了。

目前,我正在使用h:inputFile标记。

 <h:inputFile id="file" value="#{TrainingDirectoryBean.file}"></h:inputFile>

我的bean:TrainingDirectoryBean具有以下属性

protected Part file;

但我无法从中获得完整的路径。解决方案是什么?

1 个答案:

答案 0 :(得分:2)

JSF <h:inputFile>组件生成一个HTML <input type="file">元素,它正式只能发送文件内容和唯一的文件名 - 尽管某些浏览器,特别是由Redmond的某个团队开发的浏览器,由于安全漏洞,还会发送完整的文件路径和文件名;因此,在未来的版本中可以修复和删除,因此当然不应该依赖它。

在HTML术语中,不存在任何允许最终用户从其本地磁盘文件系统中选择完整文件路径并将其完整(没有关联的文件内容)发送到服务器的元素。由于JSF在这个问题的上下文中仅仅是一个HTML代码生成器,因此在JSF中也是不可能的。

考虑创建一个基于SwingApplet,您可以在HTML页面(或JSF页面,根据您如何解释事物的视角)中嵌入通常的方式。 Swing JFileChooser能够选择本地磁盘文件系统位置并获取完整路径。您可以通过URLConnection将此信息发送到服务器(不要忘记签署小程序以避免让最终用户担心它可能产生的安全警告)。