处理一些导入过程,我需要先在服务器上的某个位置上传文件,然后我需要从这个位置选择文件将其导入系统。 我只是想知道什么是存储上传文件的最佳位置。我没有多少选择
1)可以在tomcat的根目录中创建一个文件夹,然后将上传文件放在那里,稍后可以为导入过程选择文件。
File dir = new File(System.getProperty("catalina.base"), "uploads");
这是一个不错的选择,天气上面的代码将在所有环境中同等地运作
2)我可以在我的应用程序下创建一个uploads文件夹,可以访问它进行文件上传,然后使用以下代码进行导入
ServletActionContext.getServletContext().getRealPath("uploads");
我需要您提出宝贵的建议我需要做的唯一工作就是上传文件并运行上传文件的导入过程,一旦导入成功,就将文件从此文件夹中移除到其他类似处理过的文件等。 / p>
答案 0 :(得分:10)
File dir = new File(System.getProperty("catalina.base"), "uploads");
它不适用于缺少catalina.base
属性的环境。因此,您需要在webapp的安装手册中正确记录它,以确保在相关的服务器计算机上设置此属性,或者寻找替代方法。
ServletActionContext.getServletContext().getRealPath("uploads");
这不是永久存储的好选择。重新部署WAR时,一切都会迷失。
而是将其存储在webapp外部的已知且固定的路径中,并在Tomcat的<Context>
中将其路径添加为/conf/server.xml
,以便它也可以在线使用。
如果由于某种原因不想更改Tomcat的/conf/server.xml
,则需要创建一个servlet,使用FileInputStream
从磁盘读取文件并将其写入OutputStream
的回应。您可以找到here基本示例。