【问题标题】:Get file path of uploaded file from p:fileUpload从 p:fileUpload 获取上传文件的文件路径
【发布时间】:2015-02-24 05:32:18
【问题描述】:

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

我尝试了以下 PrimeFaces 组件:

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

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

【问题讨论】:

  • 只是为了清楚你想要上传文件的客户端机器上的源路径?

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


【解决方案1】:

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

通常,只有文件名被发送,您甚至不应该使用该文件名将获得的内容保存在磁盘上,以避免文件被覆盖,以防(另一个)最终用户巧合地上传具有完全相同名称的文件。您最多应该将其用作元数据(例如,预填充 Save As 文件名,以防最终用户想稍后将其下载回来)。

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

另见:

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2020-09-22
    • 2017-05-31
    相关资源
    最近更新 更多