struts2实现文件上传

研究了两天终于搞定了,之前一直想着怎么能将文件上传到eclipse中项目的WebContent目录下,然后在别的页面将上传的图片打开,之前一直被绝对路径所误导,

取得路径的方式:

String realPath = ServletActionContext.getRequest().getRealPath("file"); 

但是在控制台输出的时候却是:

D:\JP\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\s2demo\ 

我就被这迷惑了,然后就一心想着怎么把这路径存到数据库,然后在别的页面上通过绝对路径来取得刚上传的文件,弄了一天没搞明白,搜了很多资料也没有彻底理解,今天晚上就想啊怎么解决呢,就试了一下使用相对路径来取,11(图片不会弄)

在上传的时候将文件的路径存成相对路径的形式:

 

String path = "";  

 

        // 设置上传文件目录(其实这里设置的就是相对目录,只不过输出的绝对路径其实是tomcat部署之后的路径,总之完全可以当做相对路径来理解就对了)  

 

        String uploadPath = ServletActionContext.getServletContext()  

 

                .getRealPath("/image");  

 

          

 

        // 设置目标文件  

 

        if(!"".equals(this.getImageFileName())&& this.getImageFileName() != null){

 

        File toFile = new File(new File(uploadPath), this.getImageFileName());  

 

        

 

        if(!toFile.getParentFile().exists()){

 

        toFile.getParentFile().mkdirs();

 

        }

 

    FileUtils.copyFile(image, toFile);

 

        //往数据库中存入相对路径

 

        path = "../image/"+this.getImageFileName();

 

        }

 

//        path = path.replaceAll("\\\\", "\\\\\\\\")  ;

 

SqlEditEdTjsjDao dao=new SqlEditEdTjsjDao();

 

dao.edit(id,path,title,author,p_date,company,content);

 

然后在页面上显示的时候完全就可以取得数据库里的路径直接用就可以了:

 

<img src="${tjsj.image_path }" />

 

 

 

至于为什么每次重启tomcat上传的文件都会消失,原因是因为从eclipse启动tomcat的时候会将tomcat之前部署的文件先删除再部署,所以之前上传的文件就丢失了,如果不通过eclipse就可以了。

 

eclipse运行tomcat是为了方便开发的。它默认是建立一个临时空间来运行项目的。并且随时保持于eclipse中项目的同步的。你如果直接将项目打成war包放在tomcat下的话,就不会有这样的问题了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值