在我的基于 Web 的应用程序 (Tomcat7/JDK 7 - JSP 3.0) 中,我构建了一个翻译器来获取 csv 文件,清理它们,然后保存文件。然后第二部分解析文件中的某些信息并创建第二个文件(因此它可以加载到另一个系统中进行验证)。这每天都会发生。这些文件正在写入 ${ECLIPSE_HOME}(因为我在 Eclipse 中运行它)。
我想要做的是在应用程序的根目录{即[app-root]/toBeDLd}中创建一个文件夹,专门用于将生成的文件保存到其中并下载它们,让我的前端JSP能够读取和显示文件(如可下载文件列表,您单击它在网络浏览器中下载的链接)并在特定时间删除该目录中的所有文件。我不需要保留它们,也不需要备份它们。
根据我的阅读,Sending OutputStream to browser and let browser save it将是一个不错的起点,但我也阅读了一些关于 SO 的其他评论,将文件保存在 Web 应用程序目录中违反了 servlet 规范。我不确定这是否是因为它是 webapp 的根目录。理想情况下,我希望将其完全包含在 Web 应用程序中。
这可能吗?这是最好的方法吗?
最佳答案
不要将其放在 Tomcats webapps 下的任何位置。这可能是一个非常糟糕的主意。
我的建议是给你的 web.xml 添加一个 dataDir
初始化参数:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
<init-param>
<param-name>dataDir</param-name>
<param-value>/var/data</param-value>
</init-param>
</servlet>
然后您可以在您的 servlet 中使用此参数:
getServletConfig().getInitParameter("dataDir");
如果你希望它与你的 Tomcat 紧凑,可以选择 $CatalinaBase/dataDir
现在部署 Servlet 的人可以决定将数据放在哪里。 也许是一个没有执行权的额外分区。也许是一个额外的快速分区。
关于java - 在 Java 中创建可下载文件并存储在 Web 应用程序子目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990167/