jsp上传图片,重启tomcat后图片和文件夹自动删除,求解决办法。

tokissing 2011-03-12 11:47:12
是这样的。
我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个。
然后开始些日图片,就是上传图片,能成功。
但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了。
求解决办法!!!
或者有更好的上传方法也行。急。。。。。。。
...全文
12846 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
李保强 2013-11-30
  • 打赏
  • 举报
回复
这个帖子不错啊。学习啦!
NAMEDOUBLE 2013-11-30
  • 打赏
  • 举报
回复
很正常好么,因为你上传到服务器的时候是编译过的。 你存到本地磁盘有什么用?request.getSession().getServletContext().getRealPath("/");这句没错的。 在本地测试的话别重新部署就行。
Zerlinda_Li 2013-11-29
  • 打赏
  • 举报
回复
引用 32 楼 s478853630 的回复:
[quote=引用 30 楼 hepeng154833488 的回复:] 可以把这个文件夹创建到你的项目里面吗?……
行不行,你试试便知道了, 部署web项目,别在eclipse中点来点去的部署,那样虽然快捷,但实际上是复制项目到tomcat,有很多弊端! 修改tomcat的配置文件正好解决这个问题, 你反过来想一想,javaweb项目的服务器一般都是linux系统,linux系统中不可能安装eclipse, 所以在linux系统中部署项目,就是修改配置文件,然后运行命令启动tomcat, 这样部署后,request.getSession().getServletContext().getRealPath("/");得到的是项目的WebRoot根目录,比如:D:\project\myProject\editor\WebRoot,上传文件时的文件夹自然就会创建在项目中, 如果你在eclipse中点来点去的部署,得到的却是tomcat的webapps根目录,文件夹就会创建在tomcat中, 我只能这样解释了,希望你能明白! [/quote]讲得真好,学习了
Zerlinda_Li 2013-11-29
  • 打赏
  • 举报
回复
引用 12 楼 XIAOXIAO_MUYU 的回复:
我也遇到个这个问题,用了好久才解决,你到网上下载文件的jar包就可以了。
什么文件的jar包?
xx4165456xx 2013-11-25
  • 打赏
  • 举报
回复
引用 17 楼 cgw1123 的回复:
[Quote=引用楼主 tokissing 的回复:] 是这样的。 我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个。 然后开始些日图片,就是上传图片,能成功。 但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了。 求解决办法!!! 或者有更好的上传方法也行。急。。。。。。。 [/Quote] 不知道楼主重启项目或清理缓存是如何来操作的,如果之前上传都是没问题的,只是在重启项目或清理缓存之后出现这种现象,也有可能是你的操作有问题吧。 是不是楼主点击过菜单Project里面的Clean呢?如果是的话,问题就在此了。
17楼正解。
别闹腰不好 2013-11-14
  • 打赏
  • 举报
回复
引用 15 楼 hllfl 的回复:
[Quote=引用 8 楼 weihui5368452 的回复:] 一般服务器都不会关闭的,关了也可以啊,只要不要重新部署就没事了,否则是会删除原来所有文件! [/Quote]是的
+1024
sh_peterchen 2013-11-13
  • 打赏
  • 举报
回复
引用 24 楼 s478853630 的回复:
你按这几个步骤去做,就能解决问题: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件:
<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
3.修改/tomcat/conf/server.xml文件:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
<!--<Context path="/mvc" docBase="D:\project\myProject\area\WebRoot"></Context>-->
      </Host>
其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了, 你上传的图片就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里, 不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
但是如果要debug,怎么办,用<Context>设置docbase,debug的时候不能到代码
lori0801 2013-09-10
  • 打赏
  • 举报
回复
引用 40 楼 s478853630 的回复:
D:\project\myProject\editor\WebRoot 这个路径是项目的web根目录,editor是项目名称, 那么D:\project\myProject\editor\src 就是你存放java文件的根目录了 /ser 就是项目应用的名称了,或者说是上下文路径,这个名称可以随意修改 如果你的tomcat端口是 8080, 那么项目的访问路径就是 http://localhost:8080/ser 上传时就会在D:\project\myProject\editor\WebRoot\ 目录中创建文件夹 不管你怎样重启项目,或者清理缓存,上传的文件依然存在, 因为上传的文件都已经存在于你的项目中 这样方式只需要部署一次,没有重新部署的说法 如果你是在eclipse中点来点去的部署项目,也就等于是把D:\project\myProject\editor\WebRoot目录的所有文件和文件夹都复制到了 /tomcat/webapps/editor/目录下,那么项目的访问路径就是 http://localhost:8080/editor 上传时就会在 /tomcat/webapps/editor/ 目录中创建文件夹 只要重新部署或清理缓存,上传的文件都烟消云散了 因为重新部署时,先删除 /tomcat/webapps/editor/ 目录,再复制一遍D:\project\myProject\editor\WebRoot目录的所有文件和文件夹 这回我真的已经讲的很详细了
讲的很详细,在项目的目录下上传文件,这样在重新部署,启动服务的时候文件就不会丢失,如果在服务器下创建目录,重启或者部署都会造成文件的丢失。
s478853630 2013-07-25
  • 打赏
  • 举报
回复
D:\project\myProject\editor\WebRoot 这个路径是项目的web根目录,editor是项目名称, 那么D:\project\myProject\editor\src 就是你存放java文件的根目录了 /ser 就是项目应用的名称了,或者说是上下文路径,这个名称可以随意修改 如果你的tomcat端口是 8080, 那么项目的访问路径就是 http://localhost:8080/ser 上传时就会在D:\project\myProject\editor\WebRoot\ 目录中创建文件夹 不管你怎样重启项目,或者清理缓存,上传的文件依然存在, 因为上传的文件都已经存在于你的项目中 这样方式只需要部署一次,没有重新部署的说法 如果你是在eclipse中点来点去的部署项目,也就等于是把D:\project\myProject\editor\WebRoot目录的所有文件和文件夹都复制到了 /tomcat/webapps/editor/目录下,那么项目的访问路径就是 http://localhost:8080/editor 上传时就会在 /tomcat/webapps/editor/ 目录中创建文件夹 只要重新部署或清理缓存,上传的文件都烟消云散了 因为重新部署时,先删除 /tomcat/webapps/editor/ 目录,再复制一遍D:\project\myProject\editor\WebRoot目录的所有文件和文件夹 这回我真的已经讲的很详细了
I_am_little_red 2013-07-25
  • 打赏
  • 举报
回复
引用 24 楼 s478853630 的回复:
你按这几个步骤去做,就能解决问题: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件:
<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
3.修改/tomcat/conf/server.xml文件:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
<!--<Context path="/mvc" docBase="D:\project\myProject\area\WebRoot"></Context>-->
      </Host>
其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了, 你上传的图片就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里, 不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>请问这个路径的意思是?
I_am_little_red 2013-07-25
  • 打赏
  • 举报
回复
引用 24 楼 s478853630 的回复:
你按这几个步骤去做,就能解决问题: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件:
<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
3.修改/tomcat/conf/server.xml文件:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
<!--<Context path="/mvc" docBase="D:\project\myProject\area\WebRoot"></Context>-->
      </Host>
其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了, 你上传的图片就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里, 不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
我也遇到这个重启服务器就删除图片的的问题了,我想知道,如果这样配置,等到项目完成后部署时会不会有影响?
且活且珍惜 2013-06-13
  • 打赏
  • 举报
回复
虚拟路径resin的我会,tomcat的没去研究,你搜一下应该可以找到类似的结果
kobe_byrant 2013-06-13
  • 打赏
  • 举报
回复
你肯定把上传图片的路径放在了tomcat/webapps/项目/下面。 那你每次部署了就在这下面生产相应文件夹,并且把上传的都放在这下面,如果你在myeclipse上删掉了你的部署,或者手动删掉部署,肯定图片什么的都没了。解决办法将上传路径改为其他的,远离tomcat的路径下。
Coding_Dog 2013-06-10
  • 打赏
  • 举报
回复
引用 24 楼 s478853630 的回复:
你按这几个步骤去做,就能解决问题: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件:
<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
3.修改/tomcat/conf/server.xml文件:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
<!--<Context path="/mvc" docBase="D:\project\myProject\area\WebRoot"></Context>-->
      </Host>
其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了, 你上传的图片就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里, 不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
遇到好心人了,真是太谢谢您了,不过web.xml中的配置是什么作用呢,顺便问一下,我还是个菜鸟,以后 是不是有必要好好研究一下tomcat,谢谢您勒
zxcv2212141 2013-01-05
  • 打赏
  • 举报
回复
换种方法写 就行。
ac0080519 2013-01-05
  • 打赏
  • 举报
回复
看了这么多回答,我的貌似可以
AngelWings 2012-11-07
  • 打赏
  • 举报
回复
24楼的方法可以一试
hepeng_8 2012-11-07
  • 打赏
  • 举报
回复
引用 24 楼 s478853630 的回复:
你按这几个步骤去做,就能解决问题: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件: Java code12345678910111213<servlet> <servlet-name>default</servlet-name> <servlet-cla……
可以把这个文件夹创建到你的项目里面吗?
Tony-Lu 2012-11-07
  • 打赏
  • 举报
回复
放到服务器的根目录的文件夹啊~
ytyjxhy 2012-11-07
  • 打赏
  • 举报
回复
不需要修改/tomcat/conf/web.xml文件的,那样修改只是让tomcat将该目录下的所有文件列出来而已
加载更多回复(28)
Jspxcms简介 Jspxcms是基于Java、JSP技术开发的国产开源CMS,是制作、维护网站的利器。国内CMS主要以PHP技术为主,基于Java、Jsp的CMS数量不多,功能和易用性也有一定差距。Jspxcms致力于做最好的Java CMS,依托Java的开源精神和强大的企业级功能,开创Java CMS的新时代。 jspxcms-5.1.0-release-tomcat中包含tomcat,避免因为tomcat版本和部署导致的错误。 只要电脑中装有jdk和mysql,就可以安装,无需另外下载tomcatJspxcms安装说明: 1、下载安装包并解压之后,运行tomcatbinstartup.bat; 2、进入网站首页(如:http://localhost:8080/),按提示安装; 3、安装完成后,根据系统提示tomcat。(运行tomcatbinshutdown.bat关闭tomcat,之后再运行tomcatbinstartup.bat动tomat) Jspxcms网站内容管理系统 安装包 v9.0.0 tomcat版 更新日志 改进(Improvement) 1、在站点设置里可以增加手机模板修改,不用到站点管理里修改。 2、sql脚本增加commit语句,避免因为执行脚本时为提交导致数据没有正确插入。 3、pom.xml里增加tomcat7动插件,方便希望使用tomcat7插件动的用户。 4、文档管理自动获取描述长度增加到最长的450字符。 5、友情链接列表logo限制大小,避免logo尺寸过大导致页面显示不好看。 6、InfoPage和NodePage标签增加p0参数。 7、升级MySQL驱动,支持MySQL5.7。 缺陷(Bug) 1、修复:后台右上角小房子图标的前台首页链接在多站点情况下,切换站点后无变化。 2、修复:文档管理标题图、属性图、图集在火狐下点击上按钮无反应。 3、修复:文件管理搜索功能没有保留当前文件夹路径。 4、修复:后台左侧菜单没有屏蔽无权限的菜单。 5、修复:开页面静态化后,某些栏目生成了HTML,但还会显示HTML待更新。 6、修复:文档管理doc上按钮位置不正确。 7、修复:有上下文路径时,站点静态首页地址多了一个上下文路径。 8、修复:谷歌某些版本的浏览器点击文档管理图片选择按钮无效。 9、修复:后台任务管理翻页列表固定不变。 10、修复:修改组织报错。 Jspxcms页面截图展示    相关阅读 同类推荐:CMS系统

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧