这个问题已经在这里有了答案 :
在Servlet应用程序中保存上传文件的推荐方法 (2个答案)
4年前关闭。
在某些导入过程中,我需要首先在服务器上的某个位置上传文件,然后才需要从该位置选择文件以将其导入到系统中。我只是想知道什么是存储上载文件的最佳位置。我别无选择
1)可以在tomcat的根目录中创建一个文件夹,然后可以将上传文件放在该目录中,以后可以选择该文件进行导入过程。
File dir = new File(System.getProperty("catalina.base"), "uploads");
这是一个不错的选择吗,并且上面的代码在所有环境中均能正常工作
2)我可以在应用程序下创建一个uploads文件夹,并可以使用以下代码访问它进行文件上传,然后再导入
ServletActionContext.getServletContext().getRealPath("uploads");
您需要提出宝贵的建议,我唯一需要做的工作就是上传文件,并为已上传的文件运行导入过程,一旦导入成功,请将文件从此文件夹中删除到其他已处理的文件等。
它在catalina.base缺少属性的环境中不起作用。因此,您需要在webapp的安装手册中正确记录它,以确保在相关服务器计算机上设置了此属性,或者正在寻找其他方法。
catalina.base
这不是永久存储的好选择。每当您重新部署WAR时,一切都会丢失。
而是将其存储在您的Web应用程序外部的已知且固定的路径中,并像<Context>在Tomcat中一样添加其路径,/conf/server.xml以便它也可以在线使用。
<Context>
/conf/server.xml
如果/conf/server.xml由于某种原因不想更改Tomcat ,则需要创建一个servlet,该servlet使用来从磁盘读取文件FileInputStream并将其写入OutputStream响应的。您可以在此处找到一个基本示例。
FileInputStream
OutputStream