Java 在服务器中的何处保存上载的文件?

Java 在服务器中的何处保存上载的文件?,java,jsp,tomcat,servlets,web-hosting,Java,Jsp,Tomcat,Servlets,Web Hosting,我们使用JSP和Servlet开发了一个web应用程序。我们使用的服务器是Tomcat7。我们已经雇佣了一个主机(DailyRazor)和“私有JVM”来在生产级别启动应用程序 现在,在我们的应用程序中,用户可以访问特定表单,在PC中浏览文件并将其上载到服务器。但我有一个问题;存储这些文件的最佳位置是什么?主要有3种类型的文件,所以我们想把它们分为“办公室”、“家庭”和“其他”,并为它们创建3个文件夹。但是这3个文件夹应该放在哪个主文件夹中 最重要的是,这些文件不应该通过URL访问(因为这样任何

我们使用JSP和Servlet开发了一个web应用程序。我们使用的服务器是Tomcat7。我们已经雇佣了一个主机(DailyRazor)和“私有JVM”来在生产级别启动应用程序

现在,在我们的应用程序中,用户可以访问特定表单,在PC中浏览文件并将其上载到服务器。但我有一个问题;存储这些文件的最佳位置是什么?主要有3种类型的文件,所以我们想把它们分为“办公室”、“家庭”和“其他”,并为它们创建3个文件夹。但是这3个文件夹应该放在哪个主文件夹中

最重要的是,这些文件不应该通过URL访问(因为这样任何人都可以访问它们),而Servlet可以。除此之外,位置(字符串)应该保存在我们的MySQL数据库中,这样就可以毫无问题地再次访问该文件

我们使用Netbeans IDE开发了应用程序,因此文件夹结构如下所示


我期待您的回答。

使用java属性指定文件应存储的目录,并在启动期间将其传递给tomcat。 另外,将每个用户的文件分开可能是一个好主意

可能的解决方案:

-Duser.data.export.dir=D:\users_export\directory
在java代码中,读取属性

String property = System.getProperty("user.data.export.dir");
现在让我们假设用户“A”

String userName = getCurrentUser();
Path userDirHome = Paths.get(property, userName, "Home");<br/>
String userName=getCurrentUser();
Path userDirHome=Path.get(属性,用户名,“Home”);
现在使用userDirHome存储数据

建议:在数据库中存储文件位置时,确保不存储完整路径,只存储相对路径,如“Home/myFile.txt”


这将有助于您以后在存储文件的目录中进行任何更改。

您不能将文件保存在该文件夹结构中的任何位置;Web app目录应假定为只读。请传递一个带有程序路径的属性。@chrylis:好的,这很混乱。您能解释一下吗?我还没有我以前没有这样做过。上传的文件是数据。数据存储在服务器的文件系统中的某个位置,或者与提交的其他数据一起存储在数据库中。不在应用程序结构中。@JBNizet:是的,很好,但是在哪里?你的意思是只在服务器中创建一个文件夹并保存它?@JBNizet:我们可以创建类似的东西吗/-是的,将每个用户的文件绝对是可能的,只是为了避免命名冲突。如果您不希望每个用户的文件分开,那么您需要生成唯一的文件名,并根据用户的“文件路径”对这些文件进行某种映射“对我来说毫无意义。我知道这是文件的路径,但这与将路径称为“C:/Program files/…”不同。如何制定“正确”的路径?