如何通过Servlet在项目文件夹中创建文件?

时间:2014-08-13 18:47:18

标签: java jsp tomcat servlets web-applications

我的目标是在我的Web应用程序的一个文件夹中创建文件,这样当用户单击下载按钮时,它将从该特定文件夹下载文件。例如,我的文件位于“MyProjectName / WEB-INF / NewFolder / myfile.xls”中。现在,如何在该文件夹中创建“myfile.xls”?

这是我已经尝试过的:

我在Servlet中使用此代码将文件路径设置为“/ WEB-INF / NewFolder /”:

   String filePath = getServletContext().getRealPath("/WEB-INF/NewFolder/myfile.xls");

但问题是,上面代码中“filePath”的值是:

   C:\Users\MyUserName\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\MyProjetName\WEB-INF\NewFolder\myfile.xls

因此,“myfile.xls”未在“/ MyProject / WEB-INF / NewFolder”中创建,而是在元数据文件夹中创建。因此,它只在我的机器上工作,即localhost。当我试图通过另一台机器访问我的应用程序时,我无法下载该文件。我想我正在通过JSP页面的绝对路径,这使得无法从不同的机器下载它。那么有人可以告诉我这里做错了吗?

1 个答案:

答案 0 :(得分:3)

您的webapp在运行时部署到Web服务器,而filePath指向部署文件夹中的某个位置而不是项目。

无论如何,你为什么要写入WEB-INF?例如,如果您重新部署应用程序,则通常会删除内部的所有文件。在服务器内部使用一些文件夹不是更好(例如在tomcat中我们可以使用${catalina.home}/myfiles文件夹或其他一些外部Web服务器吗?