解决tomcat中图片上传丢失问题

其实我之前都知道在tomcat中上传图片会丢失的问题,因为之前图片丢失对我的系统影响不是很大,基本上我的上传图片都是头像,所以丢失就丢失咯,我倒不在乎。可是今天我要做个广告配置,需要在后台配置广告信息,然后在手机当作banner图显示,这如果图片丢失的话就糗大了,于是我在网上找了多种方法,一一试了下,发现下面这种方法十分有效。
(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/目录,而是直接到了你的工程里,不管你怎样重启项目,或者清理缓存,上传的文件依然存在!

原理解析:
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目录的所有文件和文件夹

我是在SSH的环境下配置了上面的文件的,但是我在配置玩重新跑脚本时报错了:java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderL

其实这个错误很明细,jar包找不到,可是我在修改配置文件之前我的项目是可以正常启动的。这里要说一点,我的jar包的引入方式是通过User libaraies做映射来使用的,很明显,我这里映射的jar包在修改完配置文件后不管用了,上网找了原因,查看了一些资料,发现这个写得还不错
http://www.bkjia.com/ASPjc/853556.html
于是我把我的所有jar包放在我的web项目的lib下,重启项目,OK
然后当你部署web项目的时候,你会发现你的项目在tomcat的webapp下找不到了,这是正常的,因为它本身就做了映射了,所有当你上传图片的时候,其实它就是把图片放在你原来的项目下面了,那么不管你怎么部署项目,你原来的项目的东西都是不会被修改到的,那么图片当然就不会不见了。
参考贴吧:http://bbs.csdn.net/topics/360088800

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