研究了两天终于搞定了,之前一直想着怎么能将文件上传到eclipse中项目的WebContent目录下,然后在别的页面将上传的图片打开,之前一直被绝对路径所误导,
取得路径的方式:
String realPath = ServletActionContext.getRequest().getRealPath("file");
但是在控制台输出的时候却是:
D:\JP\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\s2demo\
我就被这迷惑了,然后就一心想着怎么把这路径存到数据库,然后在别的页面上通过绝对路径来取得刚上传的文件,弄了一天没搞明白,搜了很多资料也没有彻底理解,今天晚上就想啊怎么解决呢,就试了一下使用相对路径来取,(图片不会弄)
在上传的时候将文件的路径存成相对路径的形式:
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下的话,就不会有这样的问题了
相关推荐
在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的文件上传功能。 首先,我们注意到一个细节描述:“private String uploadContextType;应更正为private String ...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
下面将详细阐述如何使用Struts2来实现文件上传功能。 1. **Struts2文件上传组件** Struts2框架集成了一个名为`struts2-convention-plugin`的插件,它提供了文件上传的支持。主要依赖于`Commons FileUpload`和`...
在本文中,我们将深入探讨使用Struts2实现文件上传和下载的各种方案。 ### 文件上传方案 #### 1. 使用Struts2进行文件普通上传 文件上传的核心是处理`multipart/form-data`类型的表单数据。Struts2通过`Struts2-...
### Struts2实现文件上传(单个+多个文件上传) #### 一、单个文件上传 在Struts2框架中实现文件上传是一项常见的需求。本文将详细介绍如何在Struts2中实现单个文件的上传。 ##### JSP 页面设计 首先,我们需要在...
struts2 实现文件上传,手动对上传文件进行过滤,希望对大家有用 <param name="allowTypes">application/octet-stream,application/pdf</param> <!-- 仅允许上传ppt,pdf格式的 -->
在Struts2框架中,实现文件上传并展示进度条效果是一项常见的需求,尤其对于大型文件上传,用户界面的进度反馈能提供更好的用户体验。本文将详细讲解如何在Struts2中实现这一功能。 首先,我们需要理解Struts2处理...
### Struts2实现文件上传案例 #### 概述 本文将详细介绍如何利用Struts2框架实现文件上传功能。Struts2是Apache软件基金会的一个开源Web应用框架,它使用MVC设计模式并支持多种编程模式(如命令式、声明式、函数式...
在Struts2中实现文件上传,主要涉及到以下几个核心组件和步骤: 1. **配置Struts2**:首先,你需要在`struts.xml`配置文件中启用Struts2的文件上传支持。这通常通过添加`<constant>`标签并设置`struts.multipart....
以上是Struts2实现文件上传和下载的基本步骤和关键概念。在实际应用中,你可能还需要考虑性能优化、错误处理、用户体验等方面。阅读博文(https://chenzheng8975.iteye.com/blog/1733841)将为你提供更具体的实现...
在Java Struts2框架中实现文件上传进度条显示,主要涉及到的技术点包括Struts2的文件上传、Ajax异步通信以及前端进度条组件的使用。下面将详细讲解这些知识点。 首先,Struts2的文件上传功能是通过Struts2提供的`...
在Struts2中,文件上传主要依赖于`org.apache.struts2.components.FileUpload`组件,这个组件是基于Commons FileUpload库实现的,它能够处理multipart/form-data类型的HTTP请求,这是文件上传所必需的格式。...
【Uploadify + Struts2 实现文件上传详解】 在Web开发中,文件上传是一个常见的功能需求,尤其是在内容管理系统、论坛或者其他需要用户提交图片、文档等资料的场景。Uploadify是一款基于jQuery的文件上传插件,它...