Spring mvcシリーズ7のファイルをアップロードします.
5350 ワード
springMVCデフォルトの解析器にはファイルアップロードの解析が入っていません.springmvcを使ってファイルアップロードの解析器を処理します.ファイルアップロードを処理するには、springmvcで提供されるMultipartResoliverの申明が必要です.また、Commmons MultipartResolaverがMultionverインターフェイスを実現しましたので、sprigvcで設定できます.
まずファイルアップロードに必要なカバンを紹介します. commons-fileuplad-*.jar
新しいJSPページを作成します.
springmvcはファイルをアップロードする形式がたくさんあります.ここで二つを紹介します.
第一種類は、Controllerを見ます.
ファイルアップロードの第二の方法は、この方法がよく使われています.
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8" />
<property name="maxUploadSize" value="10485760000" />
<property name="maxInMemorySize" value="40960" />
</bean>
まずファイルアップロードに必要なカバンを紹介します. commons-fileuplad-*.jar
新しいJSPページを作成します.
<%@ page language="java" contentType="text/html; charset=UTF-8"
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=UTF-8">
<title> </title>
</head>
<body>
<%--<form action="user/fileUpload" method="post" enctype="multipart/form-data">--%>
<form action="user/fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="fileUpload" />
<input type="submit" value=" " />
</form>
</body>
</html>
springmvcはファイルをアップロードする形式がたくさんあります.ここで二つを紹介します.
第一種類は、Controllerを見ます.
package gd.hz.springmvc.controller;
import java.io.File;
import java.io.IOException;
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.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.ModelAndView;
@Controller("userController")
@RequestMapping("user")
public class UserController {
//
@RequestMapping(value = "fileUpload", method = RequestMethod.POST)
public ModelAndView fileUpload(
@RequestParam("fileUpload") CommonsMultipartFile file) {
//
System.out.println(file.getContentType());
//
System.out.println(file.getSize());
//
System.out.println(file.getOriginalFilename());
//
if (!file.isEmpty()) {
String path = "D:/" + file.getOriginalFilename();
File localFile = new File(path);
try {
file.transferTo(localFile);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return new ModelAndView("dataSuccess");
}
}
種類のCommons MultiiprtFileは、ファイルサイズ、ファイル名、ファイルタイプなど、具体的な使い方はspringのドキュメントを見ることができます.ファイルアップロードの第二の方法は、この方法がよく使われています.
package gd.hz.springmvc.controller;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Controller("userController")
@RequestMapping("user")
public class UserController {
//
@RequestMapping(value = "fileUpload2", method = RequestMethod.POST)
public String fileUpload2(HttpServletRequest request)
throws IllegalStateException, IOException {
//
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// form enctype="multipart/form-data"
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// CommonsMultipartFile , .
MultipartFile file = multiRequest.getFile(iter.next());
if (file != null) {
String fileName = "demoUpload" + file.getOriginalFilename();
String path = "D:/" + fileName;
File localFile = new File(path);
file.transferTo(localFile);
}
}
}
return "dataSuccess";
}
}
MultipartHttpServletRequestは、複数のファイルとファイル名を取得することができ、各ファイルを巡回して取得することができます.