《eclipse与tomcat之间文件上传自动删除问题》

文件上传时,上传到webapps目录下的文件会自动删除(在实际项目中并不会出现改现象,该现象只在使用开发工具开发阶段,在实际项目

部署的时候,文件是直接上传到项目目录下,而不会使用开发工具,简而言之就是tomcat中有上传的文件,而开发工具中并没有上传的文件

所以自动删除了)

1:文件上传时,上传到webapps目录下的文件会自动删除的原因?

tomcat目录下的webapps 文件夹是部署目录,当项目重新部署(Tomcat重启、代码改变时的自动部署),上传的文件不在部署文件的范畴内,即此时开发工具中没有上传的文件,所以上传的文件就没有了。

清理缓存也会使上传到webapps目录下的文件文件消失。

2:解决方法

把文件上传路径设置到webapps目录之外,可以在Tomcat目录下建立一个文件夹,如:upload

3:简单实现

html文件:

复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="../jsp/smartupload.jsp" method="post" enctype="multipart/form-data"><input type="file" name="file"/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>
复制代码

jsp文件:

复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.jspsmart.upload.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    SmartUpload smart=new SmartUpload();
    smart.initialize(pageContext);
    smart.upload();
    //将文件上传到项目目录下,重新部署后会自动消失
    //smart.save(request.getSession().getServletContext().getRealPath("/")+"/upload");
    //通过绝对路径将文件上传到Tomcat目录下的upload文件夹内,则重新部署后不会消失
    smart.save("D:\\software\\learningsoftware\\tomcat\\apache-tomcat-7.0.72\\upload");
%>
</body>
</html>
复制代码

 此外,直接在Tomcat/webappps目录下的项目文件中添加文件、在lib中放入jar包、修改web.xml,配置server.xml等,当Tomcat重启(或代码改变时自动部署),eclipse就会重新部署项目,或者清理缓存后,那么直接在webapps下的项目目录中进行的操作就失效了。

解决方法:

一:直接在eclipse中进行操作

如:直接在eclipse中的web项目下添加文件,导入jar包(直接复制粘贴,再build path-add to build path),修改web.xml文件,在servers项目中修改server.xml等,即便重新部署这些操作也不会消失,因为这些内容已经存在于eclipse中了。

二:取消eclipse的自动发布功能

 Window->Preferences->Server->Launching->点击取消Automatically publish wen starting servers        参考博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章