我目前正在寻找一些使用 Java Server Faces 上传的文件。我找到了 this great introduction它使用 RichFaces。但是,我在理解这里的过程时遇到了一些麻烦。
首先,用户选择一个文件,如果将立即上传设置为 true,则使用 ajax 处理该文件,到目前为止一切顺利。然而,当涉及到下一步时,Bean 端的监听器让我感到困惑:
public void listener(UploadEvent event) throws Exception{
UploadItem item = event.getUploadItem();
File f = item.getFile();
System.out.println(f.getAbsolutePath());
}
绝对路径是我计算机上的临时目录,我当然理解这一点,但是您如何使该文件可用于 webb 应用程序?我的应用程序部署为 WAR 文件。是否可以将其上传到 WAR 中?可能听起来很愚蠢,但它实际上可能很方便。
我完全知道我可以重命名文件以将其复制到新位置,但这是要走的路吗?
最佳答案
将内容写入您的 WAR 目录(假设 WAR 甚至分解为目录)通常是一个坏主意(出于同样的原因,将数据存储在应用程序目录中通常是一个坏主意)。
您可能希望它最终出现在一个持久性存储中,通常是一个数据库。究竟如何管理取决于您 - 是使用文件系统并在数据库中存储引用还是直接在数据库中存储 BLOB,以及是否使用 JDBC、JPA 或 Hibernate 等。
然后可以通过使用类似 <a4j:support event="onuploadcomplete" reRender="info" />
的内容刷新包含它们的面板来从数据库中读取上传文件的列表。 .
文件下载 servlet(如果 RichFaces 没有)很容易编写。
关于jsf - 使用 RichFaces 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605758/