【问题标题】:JSF FileUpload Directory [duplicate]JSF FileUpload 目录 [重复]
【发布时间】:2011-06-16 14:22:48
【问题描述】:

您好,我实现了 BalusC 的 Fileupload example,它工作得很好 :-D 我的问题与文件目录有关。在示例中,目录位于c:\upload。 我的意图是通过 fileupload 更改我的 webApps header-image。为了实现这一点,我必须有不同的想法:

  1. 将图片保存在我的 webApps 资源目录中,然后在 xhtml 页面中简单地引用它。但不幸的是,没有得到 webApps 的目录来保存它。该怎么做?

  2. 我将图片保存在我的 web 应用程序之外(如示例所示)。但是我必须将外部图像引用到 xhtml 页面中,我也不知道该怎么做..

你能告诉我如何解决其中一种方法吗:-)

【问题讨论】:

    标签: java jsf file-upload


    【解决方案1】:

    将图片保存在我的 webApps 的资源目录中,然后在 xhtml 页面中简单地引用它。但不幸的是,没有得到 webApps 的目录来保存它。该怎么做?

    技术上,您可以使用ExternalContext#getRealPath() 将相对网络路径转换为绝对磁盘文件系统路径。

    String relativeWebPath = "/upload";
    String absoluteDiskPath = externalContext.getRealPath(relativeWebPath);
    File file = File.createTempFile(prefix + "_", "." + suffix, new File(absoluteDiskPath));
    // ...
    

    但不建议这样做! 每当您将文件写入公共网络内容时,无论何时重新部署 web 应用程序甚至重新启动服务器,它们都会丢失。它不打算作为永久存储。检查How to save uploaded file in JSF的正确方法。

    我将图片保存在我的 webapp 之外(如示例所示)。但是我必须在 xhtml 页面中引用外部图像,我也不知道该怎么做。

    要么将路径添加为服务器的新上下文(如何做到这一点取决于 servletcontainer 的制作/版本,或者创建一个 servlet,它只通过 FileInputStream 获取它的 InputStream 并将其写入 @987654328回复的@。另见Load images from outside of webapps / webcontext / deploy folder using <h:graphicImage> or <img> tag

    【讨论】:

    • 由于时间问题,我选择了快速而肮脏的解决方案。谢谢
    猜你喜欢
    • 2014-05-21
    • 2013-08-29
    • 2017-03-21
    • 1970-01-01
    • 2011-11-13
    • 2013-12-27
    • 2017-06-14
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多