第七章:文件上傳-3. 上傳多個文件

在以前只是進行了單一的文件上傳,可是在不少的狀況下是有可能要傳遞多個文件的,因此這個時候首先要解決的一個問題就是表單裏面須要提供有多個上傳的項,然後在控制器上再進行一些簡單的處理javascript

1.修改上傳表單:html

upload_page.htmljava

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模版渲染</title>
	<script type="text/javascript" th:src="@{/js/main.js}"></script> 
	<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
	<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
		姓名:<input type="text" name="name"/><br/>
		照片:<input type="file" name="photo"/><br/>
		照片:<input type="file" name="photo"/><br/>
		照片:<input type="file" name="photo"/><br/>
		<input type="submit" value="上傳"/>
	</form>
</body>
</html>

2.修改控制器中的參數接收,這個地方須要一點點特殊處理web

package cn.mldn.microboot.controller;

import java.util.Iterator;
import java.util.List;

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.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import cn.mldn.microboot.util.controller.AbstractBaseController;

@Controller
public class UploadController extends AbstractBaseController {
	@RequestMapping(value = "/uploadPre", method = RequestMethod.GET)
	public String uploadPre() { // 經過model能夠實現內容的傳遞
		return "upload_page";
	}
	@RequestMapping(value = "/upload", method = RequestMethod.POST)
	@ResponseBody
	public String upload(String name, HttpServletRequest request) {
		if (request instanceof MultipartHttpServletRequest) { // 若是你如今是MultipartHttpServletRequest對象
			MultipartHttpServletRequest mrequest = (MultipartHttpServletRequest) request;
			List<MultipartFile> files = mrequest.getFiles("photo");
			Iterator<MultipartFile> iter = files.iterator();
			while (iter.hasNext()) {
				MultipartFile photo = iter.next() ;
				if (photo != null) { // 如今有文件上傳
					System.out.println("【*** 文件上傳 ****】name = " + name);
					System.out.println(
							"【*** 文件上傳 ****】photoName = " + photo.getName());
					System.out.println("【*** 文件上傳 ****】photoContentType = "
							+ photo.getContentType());
					System.out.println(
							"【*** 文件上傳 ****】photoSize = " + photo.getSize());
				}
			}
		}
		return "upload-file";
	}
}

多個上傳文件的信息要經過spring包裹的request對象得到。spring

相關文章
相關標籤/搜索