1

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

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

现在,我正在使用 h:inputFile 标签。

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

我的 bean:TrainingDirectoryBean 具有以下属性

protected Part file;

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

4

1 回答 1

2

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

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

考虑创建一个基于SwingApplet,然后将其以通常的方式嵌入到 HTML 页面(或 JSF 页面,具体取决于您解释事物的角度)。SwingJFileChooser能够执行选择本地磁盘文件系统位置和获取完整路径的任务。您可以反过来将此信息发送URLConnection到服务器(不要忘记签署小程序,以免终端用户担心它可能产生的安全警告)。

于 2013-09-16T11:12:10.683 回答