SpringBoot 上传多个文件

在之前都只是进行了单一的文件上传,但是在很多的情况下是有可能要传递有多个文件的,所以这个时候首先要

解决的问题是表单里面需要有多个上传的项,而后在控制器上再进行一些简单的处理器即可

1、修改上传表单:

upload_page.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>SpringBoot模板渲染</title>
	<link rel="icon" type="image/x-icon" href="/images/favicon.ico" />
	<meta http-equiv="Content-Type" content="text/html;charse=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、修改控制器之中的参数接收,这个地方需要一点点特殊处理;

package com.microboot.controller;

import java.io.IOException;
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 com.microboot.util.controller.AbstractBaseController;

@Controller
public class UploadController extends AbstractBaseController{
	
    @RequestMapping(value = "/uploadPre", method = RequestMethod.GET)
    public String uploadPre() {       
        return "upload_page";
    }
    
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public String upload(String name,HttpServletRequest request) {
    	// 如果你现在是MultipartHttpServletRequest的一个对象
    	if(request instanceof 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());
    				try {
    					photo.getInputStream();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    	return "upload_file";
    }
    

	
}
多个上传文件的信息要通过Spring包裹的Request对象获得.

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/88166827