【发布时间】:2010-08-09 15:48:36
【问题描述】:
是否可以从 JSF 应用程序中找出部署路径?
还有一个问题(如果前一个问题的答案是正确的):在那里存储一些上传的文件是否合法?
【问题讨论】:
标签: java deployment jsf file-upload
是否可以从 JSF 应用程序中找出部署路径?
还有一个问题(如果前一个问题的答案是正确的):在那里存储一些上传的文件是否合法?
【问题讨论】:
标签: java deployment jsf file-upload
是否可以从 JSF 应用程序中找出部署路径?
不是直接,您需要从ExternalContext 中获取ServletContext,如下所示:
ServletContext servletContext = (ServletContext) externalContext.getContext();
它又提供了众所周知的 dubious getRealPath() 方法。
String webContentRoot = servletContext.getRealPath("/");
如果您已经使用 JSF 2.0,则可以改用 ExternalContext#getRealPath()。
还有一个问题(如果前一个问题的答案是正确的):在那里存储一些上传的文件是否合法?
你可以这样做。您只需要考虑到在重新部署应用程序时它们都会丢失,原因很简单,这些文件不包含在原始 WAR 中。
如果您想要更多的永久存储空间,请考虑将其存储在 Web 应用程序外部的固定路径中,例如/var/webapp/upload 左右。另一种方法是将它们存储在数据库中,这将增加可移植性,但请记住在文件内容中存储一些元数据(名称、内容类型、上次修改的时间戳等),以便您有一些东西可以索引/搜索/缓存开。
【讨论】: