SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】

      注意:此文章是个人原创。希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力。LinusZhu在此表示十分感谢,当然文章中如有纰漏。请联系linuszhu@163.com。敬请朋友们斧正。谢谢。

      不知不觉已经把Spring的基础部分解说完了。所讲述的都是在项目中经经常使用到的东西。是经得住考验的。接下来的部分主要是要讲述使用SpringMVC进行的文件上传、处理Ajax请求、自己定义拦截器功能的实现,不多说了,首先解说文件上传部分,開始……

      主要过程例如以下:

1. 须要使用apache-commons下得上传组件。须要引入两个jar包:

apache-commons-fileupload.jar、apache-commons-io.jar

2.  Springmvc-servlet.xml配置文件里。添加CommonsMultipartResoler配置。例如以下:

<bean id="multipartResolver"  

    class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >  

    <property name="defaultEncoding" value="gbk"/> <!-- 默认编码 (ISO-8859-1) -->  

    <property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)-->  

    <property name="uploadTempDir" value="/upload/"/> <!-- 文件暂存地址,不是终于的文件文件夹 -->  

    <property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) -->  

</bean>

3.创建upload.jsp页面,内容例如以下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>SpringMVC文件上传</title>

</head>

<body bgcolor="#d6e3f6">

<form action="upload.do" method="post" enctype="multipart/form-data">

<input type="file" name="file" />

<br/><input type="submit" />

</form>

</body>

</html>

4. 建立控制器,代码例如以下:

package  com.spring.controller;

import java.io.File;

import java.util.Date;

import javax.servlet.ServletContext;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.context.ServletContextAware;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

@Controller

public  class  FileUploadController  implements  ServletContextAware {

private ServletContext servletContext;

@Override

public void setServletContext(ServletContext context) {

this.servletContext  = context;

}

//@RequestParam("file")一定要有

@RequestMapping(value="/upload.do")

public  String handleUploadData(@RequestParam("file")  CommonsMultipartFile file){

if (!file.isEmpty()) {

             //获取本地存储路径

   String path = this.servletContext.getRealPath("/uploadFile/");        System.out.println(path);

   String fileName = file.getOriginalFilename();

   String fileType = fileName.substring(fileName.lastIndexOf("."));

   System.out.println(fileType); 

             //新建一个文件

   File file2 = new File(path,new Date().getTime() + fileType);     try {

                  //将上传的文件写入新建的文件里

    file.getFileItem().write(file2);

   } catch (Exception e) {

    e.printStackTrace();

                  return "redirect:upload_error.jsp";

   }

   return "redirect:upload_ok.jsp";

}else{

return "redirect:upload_error.jsp";

}

}

}

5. 建立upload_ok.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  </head>

  <body>

   <h1>上传文件成功</h1>

  </body>

</html>

 6. 建立upload_error.jsp页面

  <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  </head>

  <body>

   <h1>上传文件失败</h1>

  </body>

</html>

 7. 项目执行測试:

输入地址:http://localhost:8081/SpringMVC02/upload.jsp ,选择要上传文件,例如以下:

 

点击提交。上传成功返回成功界面:

进入项目公布后的上传文件路径(uploadFile目录以下),会发现上传的文件,例如以下:

 

 

 

 

posted @ 2016-01-18 20:55  zfyouxi  阅读(170)  评论(0编辑  收藏  举报