你好我实现了BalusC的Fileupload example,它的工作正常:-D
我的问题与File direcory有关。在示例中,目录位于c:\upload
。
我的目的是通过fileupload更改我的webApps header-image。要实现这一目标,我必须采取不同的方式:
将图片保存在我的webApps资源目录中,并在xhtml页面上简单地引用它。但不幸的是,没有得到webApps的目录来保存它。怎么办?
我将图片保存在我的webapp之外(如示例所示)。但后来我必须将外部图像引用到xhtml页面中,我也不知道该怎么做..
你能告诉我如何解决其中一种方式:-)
答案 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。