从p:fileUpload获取上传文件的文件路径

时间:2015-02-24 05:32:19

标签: jsf file-upload jsf-2 primefaces path

我想一次上传一个文件,获取每个文件的路径并将其添加到列表中。稍后它将用于将它们全部保存在E:/myfile/...这样的永久目录中。

我尝试了以下PrimeFaces组件:

<p:fileUpload value="#{fileUploadView.file}" mode="simple" />

但是,我无法获取文件路径。我怎么能得到它?

1 个答案:

答案 0 :(得分:3)

最终用户不会向您发送完整的客户端文件路径。即便如此,如果确实如此,你将如何只通过路径获取文件内容?如果有可能的话,这将是一个巨大的安全漏洞,因为世界上任何人都可以通过整个互联网从任何其他人的磁盘中轻松地抓取文件。

通常,只发送文件名,您甚至不应该使用该文件名将获取的内容保存在磁盘上以避免文件被覆盖以防万一(另一个)最终用户巧合地上传一个名称完全相同的文件。您应该最多使用它作为元数据(例如,预先填写另存为文件名,以防最终用户希望稍后将其下载)。

您实际上应该对以InputStreambyte[]的风格发送给您的实际文件内容感兴趣,而不是原始客户端路径或文件名。文件内容仅发送 ,并且一旦bean操作方法命中,您应该立即读取并将其写入服务器端的更永久的位置。然后,跟踪视图中某些List<String>List<File>或会话范围中这些已保存文件的(自动生成/预定义!)文件名/路径。

另见: