`
Jeenry119
  • 浏览: 68147 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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.getElementByIdx("filelist").appendChild(fileName);
      document.getElementByIdx("filebutton").appendChild(fileNewInput)
      obj.style.display="none";
      i = i + 1;
     }
    }
    function delFile(obj){
     document.getElementByIdx("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