JSF FileUpload目录

时间:2011-01-27 14:31:14

标签: java jsf file-upload

你好我实现了BalusC的Fileupload example,它的工作正常:-D 我的问题与File direcory有关。在示例中,目录位于c:\upload。 我的目的是通过fileupload更改我的webApps header-image。要实现这一目标,我必须采取不同的方式:

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

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

  3. 你能告诉我如何解决其中一种方式:-)

1 个答案:

答案 0 :(得分:1)

  

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

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

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

但不推荐这样做!每当您将文件写入公共webcontent时,无论何时重新部署Web应用程序,甚至重新启动服务器,它们都会丢失。它不是永久存储的意图。以正确的方式检查How to save uploaded file in JSF

  

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

将路径添加为服务器的新上下文(如何执行此操作取决于servletcontainer make / version,或创建一个仅由InputStream获取FileInputStream的servlet并写入至OutputStream的回复。另请参阅Load images from outside of webapps / webcontext / deploy folder using <h:graphicImage> or <img> tag