springboot文件上传的时候控制层MultipartFile接收到的数据一直是null

springboot文件上传相关问题

在最近的这个项目中需要用到文件上传功能。但是第一次使用springboot框架,也不知道 文件上传都需要什么配置,网上说的是直接写,我就直接写了。先附上我写的测试代码。
jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


	
	
		首页 -后台
	
	
		${rootPath } --->
		
名称 链接
首页 首页

控制层代码:
这里的参数MuiltiPartFile是org.springframework.web.multipart.MultipartFile类型的参数

package com.example.demo;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

/**
 * 测试类,首页
 * @author TeaBig
 */
@Controller
@RequestMapping("/")
public class MainBackController
{
	/**
	 * 上传文件提交
	 * @return
	 */
	@RequestMapping("/upload")
	@ResponseBody
	public String upload(HttpServletRequest request,MultipartFile file)
	{
		String a = request.getParameter("a");
		System.out.println(a + "--初始打印-->" + file);
		if(file != null)
		{
			System.out.println(a + "--第二次打印-->" + file.getOriginalFilename());
		}
		return "Ok";
	}
}

反复的测试,结果还是一样的。
传到控制层的代码就一直是null。因为是第一次用springboot,这一个错误我搞了三天才找到原因。
最后找的的解决办法是:
在boot应用的main方法所在的类中注入:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.DispatcherServlet;

@SpringBootApplication
@EnableAutoConfiguration
public class ApplicationWeb {

	public static void main(String[] args) {
		SpringApplication.run(ApplicationWeb.class, args);
	}
	
	/**
	 * 增加访问的前缀和后缀
	 */
	@Bean
	public ServletRegistrationBean servletRegistrationBean(DispatcherServlet servlet)
	{
		ServletRegistrationBean bean = new ServletRegistrationBean(servlet);
		bean.addUrlMappings("*.htm");
		return bean ; 
	}
	
	//解决上传文件控制层接收为null的方法
	@Bean(name = "multipartResolver")
	public CommonsMultipartResolver multipartResolver() {
       CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
       return multipartResolver;
    }
}

你可能感兴趣的:(框架-springboot)