首页 > 代码库 > SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】

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=http://www.mamicode.com/"/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文件夹下面),会发现上传的文件,如下: