文件上传本身其实并不复杂,但是它会牵涉到很多细节上的处理,加起来就比较复杂了。
主要用到的技术有:
dwr2
spring2.5
ibatis2
spring mvc
jquery
下面将分步进行说明:
1. 上传文件。
在spring 配置文件中声明上传文件的bean:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>1000000</value>
</property>
</bean>
在jsp页面中定义字段:
<input id="fileData" type="file" name="fileData"/>
JS验证扩展名:
var image =$("#fileData").val();
if(image!=''){
var checkimg = image.toLowerCase();
if (!checkimg.match(/(\.jpg|\.png|\.JPG|\.PNG|\.gif|\.GIF|\.jpeg|\.JPEG)$/)){
alert("请选择以下扩展名图片 .jpg,.png,.jpeg,.gif");
$("#fileData").focus();
return false;
}
在实体对象中定义MultipartFile属性:
private MultipartFile fileData;
public MultipartFile getFileData() {
return fileData;
}
public void setFileData(MultipartFile fileData) {
this.fileData = fileData;
}
在控制器中,可以使用命令对象的方式来绑定属性,但在2.5中使用了MultiActionController,所以绑定
对象直接使用bind()方法,如:
User user = new User();
super.bind(request, user);
MultipartFile fileData= user.getFileData();
byte[] data = fileData.getBytes();
一般会有一个文件名,即重新命名上传文件的文件名:
private String getFileName(MultipartFile fileData){
//上传的文件名
String uploadFileName = fileData.getOriginalFilename();
String extensionName = uploadFileName.split("\\.")[1];
UUID uuid = UUID.randomUUID();
return uuid.toString()+"."+extensionName;
}
上面采用了uuid的命名方式,这样至少要比用id来命名快一些,一般也不会出现重复。
2.ibatis中,在执行更新操作时,如果没有再次选择文件,则不要更新上传的文件字段。即在ibatis的update中:
<isNotEmpty property="staffIcon">
STAFF_ICON = #staffIcon:VARCHAR#,
</isNotEmpty>
3.在JSP页面中,通过dwr删除文件。
function removeStaffIcon(){
var staffId = $("#staffId").val();
staffService.deleteStaffIcon(staffId,function(data){
if(eval(data)){
alert("删除成功!");
$("#deleteStaffIcon").remove();
}else{
alert("删除失败! ");
}
});
}
<c:if test="${!empty staff.staffIcon}">
<div id="deleteStaffIcon">
<a href="<%=path%>/pages/basedata/dep/stafficon /${staff.staffIcon}">${staff.staffIcon}
</a>
<a onclick="removeStaffIcon();" href="javascript:void(0);">
<img border="0" alt="删除" src="<%=path%>/images/btn_delete.png">
</a>
</div>
</c:if>
4.在删除文件时,既要删除图片文件夹中的文件,也要将此字段的值设为空。在dwr中先获得
HttpServletRequest 即可知道文件存放路径。
WebContext context = WebContextFactory.get();
HttpServletRequest request = context.getHttpServletRequest();
String realPath = request.getSession().getServletContext().getRealPath("/");
。。。。
分享到:
相关推荐
Java 文件上传程序是指使用 Java 语言编写的文件上传程序,负责接收和处理客户端上传的文件。以下是 Java 文件上传程序的相关知识点: 1. 服务器端编程:Java 文件上传程序的服务器端使用 Java 语言编写,主要使用 ...
以下是一个简单的Java文件上传处理示例: 1. **创建Multipart解析器**:由于HTTP请求可能包含多个部分(如表单数据和文件),我们需要使用`MultiPartConfig`注解配置Servlet来处理Multipart请求。 ```java @.Web...
在Java端,我们需要创建一个处理文件上传的服务器端接口。这通常涉及到Servlet或Spring MVC中的控制器方法。当文件上传请求到达服务器时,这些方法会接收文件流,保存到服务器的磁盘上,或者将其存储到数据库或云...
"性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验。在这个场景中,我们提到了基于"COS"的Java文件上传组件。COS通常指...
MultipartFile.transferto() 多个文件上传 第二次调用 会报错(系统找不到文件,临时文件被删除)
在Java编程语言中,文件上传是一项常见的功能...以上就是基于Java的文件上传涉及的主要技术点,涵盖了从客户端请求到服务器处理的整个流程。通过理解并熟练掌握这些知识点,开发者能够创建出高效、安全的文件上传功能。
首先,我们来看“java文件上传”这个知识点。Java提供了多种方法来处理文件上传,最常见的是使用Servlet API中的Part接口,这是Java EE 7引入的,专门用于处理multipart/form-data类型的HTTP请求,也就是通常用于...
在这个场景下,"文件上传下载需要的jar包"指的是用于处理文件上传和下载操作的Java类库。下面将详细介绍相关的知识点。 1. **Apache Commons FileUpload**: 这是一个非常流行的Java库,用于处理HTTP请求中的多部分...
在Java编程语言中,文件上传是一项常见的...总的来说,"java文件上传组件包"提供了一系列工具和方法,帮助开发者高效、安全地处理文件上传任务。通过理解并熟练运用这些知识点,你可以构建出稳定可靠的文件上传系统。
3. `Java服务端代码`:处理文件上传的Servlet或Controller,负责接收请求、解析文件并保存到服务器。 4. `CSS样式文件`:定义了上传界面的样式,使界面更加美观。 5. `HTML模板`:可能包含了SWF和EXT的初始化代码,...
本示例("java文件上传dome")聚焦于使用Tomcat中的Servlet和Apache Commons FileUpload库来实现这一功能。以下是这个示例中涉及的关键知识点: 1. **Servlet**: Servlet是Java EE中用于扩展服务器功能的Java类。...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...
总的来说,这个源码包提供了从客户端文件选择、HTTP上传、服务器端接收、文件保存到服务器的完整流程,是学习和理解Java文件上传功能的好例子。通过深入研究和实践,开发者可以掌握文件上传这一核心的Web开发技能。
3. Spring MVC控制器的文件上传处理 4. 文件信息的封装类`FileBean` 5. 文件内容的读取和转换 6. 服务器上的文件保存策略 7. 服务层和事务管理 以上就是关于Java Spring文件上传的基本介绍和实现步骤。在实际项目中...
这两个库提供了强大的文件操作和文件上传功能,是Java开发者处理文件上传问题的得力助手。 首先,`commons-io-2.5.jar`是Apache Commons IO库的一部分,这是一个用于处理输入/输出操作的Java库。它提供了许多实用...
在Java编程中,文件上传是一项常见的任务,尤其在开发Web应用程序...通过这个简单的Java文件上传例子,开发者可以学习如何在实际项目中实现文件上传功能,并理解相关的技术细节。这有助于提升Web应用的交互性和功能性。
总结来说,Java文件上传AR包涉及到使用Servlet API、Apache Commons FileUpload和IO库来处理多部分请求,解析上传的文件,存储到服务器,并确保整个过程的安全性和性能。在实际开发中,这些知识点是构建高效、安全...
这个"Java文件上传案例"涵盖了使用jsp、Servlet和JDBC工具类实现文件上传的基本流程。以下是对这些知识点的详细解析: 首先,**Java文件上传**通常涉及到HTTP协议中的multipart/form-data编码类型,这是在HTML表单...
### Java文件上传方法详解 在Java开发中,文件上传是一个非常常见的需求,尤其是在Web应用程序中。本文将基于提供的代码片段,详细介绍如何使用Java实现文件上传功能,并解释代码中的关键部分。 #### 一、代码结构...
在Java中,`Commons-FileUpload`库是一个常用的处理文件上传的工具包,它提供了方便的API来解析`multipart/form-data`请求。在Servlet中,我们需要解析`HttpServletRequest`对象,获取到上传文件的信息,如文件名、...