1. 程式人生 > >Spring MVC筆記(七) springMVC文件上傳

Spring MVC筆記(七) springMVC文件上傳

one 模型 定義 admin copy att post version get

創建springMVC工程 SpringMVCFileUpload,導入springMVC相關jar以及commons-io.jar、commons-fileupload.jar;

創建springMVC默認配置文件 SpringMVCFileUpload-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
> <context:component-scan base-package="com.bwy" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <
bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> </beans>

創建文件模型 FileModel.java:

package com.bwy.fileupload;

import org.springframework.web.multipart.MultipartFile;

public class FileModel {
  private MultipartFile file;

  public MultipartFile getFile() {
    return file;
  }
  public void setFile(MultipartFile file) {
    this.file = file;
  }
}

編寫上傳頁面 fileUpload.jsp:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!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=ISO-8859-1">
<title>Spring MVC 文件上傳</title>
</head>
<body>
    <form:form action="/SpringMVCFileUpload/upload.do" method="post" modelAttribute="fileUpload"
        enctype="multipart/form-data">
    請選擇一個文件上傳:<input type="file" name="file" />
        <input type="submit" value="提交上傳" />
    </form:form>
</body>
</html>

上傳成功頁面 success.jsp:

<%@ page language="java" pageEncoding="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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    ${fileName},上傳成功!
</body>
</html>

編寫上傳文件控制類:FileUploadController.java:

package com.bwy.fileupload;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/**
 * 文件上傳控制類
 * 
 * @author Administrator
 *
 */
@Controller
public class FileUploadController {

  @RequestMapping(value = "/uploadPage", method = RequestMethod.GET)
  public ModelAndView fileUploadPage() {
    return new ModelAndView("fileUpload", "command", new FileModel());
  }

  @RequestMapping(value = "/upload.do", method = RequestMethod.POST)
  public String upload(FileModel file, ModelMap model, HttpServletRequest request) {

    // 定義文件上傳目錄
    String fileUploadPath =
        request.getSession().getServletContext().getRealPath("") + File.separator + "upload"
            + File.separator;

    // 生成目錄
    File uploadFile = new File(fileUploadPath);
    if (!uploadFile.exists()) {
      uploadFile.mkdir();
    }
    try {

      // 拷貝文件,假設上傳後的文件名為:xx/xx/1.jpg
      FileCopyUtils.copy(file.getFile().getBytes(), new File(fileUploadPath + "1.jpg"));
    } catch (IOException e) {
      e.printStackTrace();
    }
    model.addAttribute("fileName", file.getFile().getOriginalFilename());
    return "success";
  }
}

啟動tomcat 運行工程:

Spring MVC筆記(七) springMVC文件上傳