`

Spring2文件上传实例

阅读更多

web.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="
http://java.sun.com/xml/ns/javaee"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>spring-action</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-action</servlet-name>
<url-pattern>*.mhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>testuploadfile.jsp</welcome-file>
</welcome-file-list>
</web-app>

spring-action-servlet.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://www.springframework.org/schema/beans"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--
使用Spring已集成的Commons FileUpload上传组件。
1.为了让DispatcherServlet处理MultipartRequest,
在Spring配置文件中声明一个MultipartResolver。
这样一旦某个Request是一个MultipartRequest,
它就会首先被MultipartResolver处理,然后再转发到相应的Controller。
-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size10MB -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
</bean>
<!--
2.配置一个Controller,来处理上传的文件。
-->
<bean name="fileUploadController" autowire-candidate="false"
class="test.web.controller.uploadfile.FileUploadController">
<property name="commandClass" value="java.lang.Object" />
<!-- 上传失败时跳转页面 -->
<property name="formView" value="/user/err.jsp" />
<!-- 上传成功时跳转页面 -->
<property name="successView"
value="redirect:/testuploadfile.jsp" />
<property name="uploadDir" value="c:/testUploadFile/" />
</bean>
<!--
3.配置一个URL映射控制器,直接将URL映射到相应的控制器处理。
-->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/testuploadfile.mhtml">
fileUploadController
</prop>
</props>
</property>
</bean>
<!--
4.配置一个视图解析器,将逻辑视图名解析为一个用模板文件(如JSP或Velocity模板)渲染的视图对象。
-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute" value="rc" />
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

FileUploadController.java文件内容:

package test.web.controller.uploadfile;

import java.io.File;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class FileUploadController extends SimpleFormController {
private String uploadDir;//上传文件路径
public void setUploadDir(String uploadDir) {
this.uploadDir = uploadDir;
}
public String getUploadDir() {
return this.uploadDir;
}
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object cmd, BindException errors)
throws Exception {
uploadFile(request);
return new ModelAndView(getSuccessView());
}
private void uploadFile(HttpServletRequest request) {
// 转型为MultipartHttpRequest:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 遍历所有文件域,获得上传的文件
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
String key = (String) it.next();
MultipartFile file = multipartRequest.getFile(key);
saveFile(file);
}
}
private void saveFile(MultipartFile file) {
if (file == null || file.isEmpty())
return;
String filename = file.getOriginalFilename();
String localfileName = uploadDir + filename;
// 写入文件
File source = new File(localfileName.toString());
try {
file.transferTo(source);
} catch (Exception e) {
e.printStackTrace();
}
}
}

testuploadfile.jsp文件内容:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
.addAttachFileUrl{
position: relative;
font-size: 12px;
}
.file {
position: absolute;
width: 1px;
left: -3px;
filter: Alpha(opacity=0);
cursor: hand;
top: -3px;
}
.filelistItem {
display: block;
background: #ffffcc;
font: "宋体";
font-size: 12px;
}
</style>
<script type="text/javascript">
var i=1;
//文件上传
var attachname = "attach_";
function addFile(obj){
if(obj.value.length>0){
var fileNewInput = document.createElement("<input type='file' name='"+
attachname + i + "' class='file' onchange='addFile(this)'/>");
var fileName = document.createElement("span");
fileName.className = "filelistItem";
fileName.innerHTML = obj.value+
"&nbsp;&nbsp;<a href='javascript:void(0)' onclick='delFile(this)'>删除</a>";
fileName.appendChild(obj);
document.getElementById("filelist").appendChild(fileName);
document.getElementById("filebutton").appendChild(fileNewInput)
obj.style.display="none";
i = i + 1;
}
}
function delFile(obj){
document.getElementById("filelist").removeChild(obj.parentNode)
}
</script>
</head>
<body>
<FORM id="myForm" method="POST" enctype="multipart/form-data"
action="testuploadfile.mhtml">
上传附件:
<div id="filelist"></div>
<br />
<a class="addAttachFileUrl" href="javascript:void(0)" id="filebutton">点击添加附件
<input type="file" name="file_0" class="file"
onchange="addFile(this)" /> </a>
<br />
<input type="submit" value="提交">
</FORM>
</body>
</html>

以上程序调试通过!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics