SSM(Spring+SpringMVC+Mybatis)框架文件上传

        本文使用的文件上传基于SSM框架中自带的文件上传机制,不懂原理,先将代码放在这里,只作测试及以后使用参考

        编写前台test.jsp

<%--
  Created by IntelliJ IDEA.
  User: 单继重
  Date: 2016/11/16
  Time: 11:05
  Description: 
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="${website}file/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file"><br><br>
        <input type="text" name="name">
        <input type="submit" value="上传">
    </form>
</body>
</html>

         简单的表单,并且有一个尝试获取的字段name

         后台Controller

package com.pandawork.web.controller;

import com.pandawork.web.spring.AbstractController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

/**
 * @author ShanJZ
 * @Description
 * @time 2016/11/16 11:01
 */
@Controller
@RequestMapping("/file")
public class FileController extends AbstractController{
    @RequestMapping(value = "/to/test")
    public String toTest(){
        return "/file/test";
    }
    @RequestMapping(value = "/upload")
    public String  springUpload(HttpServletRequest request, @RequestParam("name") String name) throws IllegalStateException, IOException
    {
        //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
                request.getSession().getServletContext());
        //检查form中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request)) {
            //将request变成多部分request
            MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
            //获取multiRequest 中所有的文件名
            Iterator iter=multiRequest.getFileNames();

            while(iter.hasNext()) {
                //一次遍历所有文件
                MultipartFile file=multiRequest.getFile(iter.next().toString());
                if(file!=null) {
                    String path="E:/springUpload"+"/"+file.getOriginalFilename();
                    //上传
                    file.transferTo(new File(path));
                }
            }
        }
        System.out.println(name);
        return "/success";
    }
}

         将文件保存至E盘下的springUpload文件夹下

注:代码参考该博客:http://www.cnblogs.com/fjsnail/p/3491033.html 顺便感谢博主(拱手)

猜你喜欢

转载自201606052202.iteye.com/blog/2338372