SpringBoot下多文件上传详解例子

springBoot下直接上传getFile可能会为null MultipartResolver获取后上传,路径必须明确到磁盘,
springBoot无法识别非磁盘路径。

springboot下需要在Application主线程下禁用掉自带的文件上传

添加 @EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})

eg:如下↓

package com.kero99;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
//扫描 mybatis mapper 包路径
@MapperScan(basePackages = "com.kero99.mapper")
//扫描 所有需要的包, 包含一些自用的工具类包 所在的路径
@ComponentScan(basePackages= {"com.kero99"})
//开启定时任务
@EnableScheduling
//开启异步调用方法
@EnableAsync
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
public class Application extends SpringBootServletInitializer {
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(Application.class);
	}
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args); 
	}	
	
}

上传文件Demo

	@RequestMapping(value="/upload")
	@Transactional(propagation=Propagation.SUPPORTS)
	public  boolean uploadZip(
	HttpServletRequest request,HttpServletResponse response){
		MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
		MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
		// MultipartHttpServletRequest mh=(MultipartHttpServletRequest) request;
		// CommonsMultipartFile cmf = (CommonsMultipartFile)
		// multipartRequest.getFile("file");
		// 获得文件
		// CommonsMultipartFile cmf=(CommonsMultipartFile) mh.getFile("file");
		Iterator<String> iter = multipartRequest.getFileNames();
		while (iter.hasNext()) {
			MultipartFile file = multipartRequest.getFile(iter.next().toString());			
			if(file.isEmpty()) {
				continue;
			}else {
				String fileName = file.getOriginalFilename();
				// 文件路径,可以替换为自己的文件夹
				String savePath = Commons.SHARE_PATH;
				// String savePath="E:\\AMapUsermark";
				File storeDirectory = new File(savePath);
				if (!storeDirectory.exists()) {
					storeDirectory.mkdirs();
				}
				// 文件路径+文件名
				String path = savePath + File.separator + fileName;
				try {
					// 保存文件
					file.transferTo(new File(path));
				} catch (IllegalStateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		
		}
		return true;
	}

es3 jquery前台

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

   <script th:src="@{/static/js/jquery-1.9.1.js}"></script>

<script type="text/javascript">

function uploadFile(){	
	 var formData = new FormData($('#uploadForm')[0]);
	    formData.append("file", file);
	    formData.append("file1", file1);
	    formData.append("file2", file2);


$.ajax({
	type : "POST",
	cache : false,
	dataType : "json",
	data:formData,
    processData: false,//用于对data参数进行序列化处理 这里必须false
    contentType: false, //必须 ?Year="+Year+"&quarter="+quarter"	
    url : "/20190419_V1.0_hbsb/test/upload",		
	success : function(obj) {
	
		if(obj==true){
			alert("成功");
		}else{
			alert("失败");
		
		}
		
	}
});	
}	
</script>
 <form id="uploadForm" enctype="multipart/form-data">
   <input type="file" id="file"  name="file"/>
   <input type="file" id="file1"  name="file1"/>
   <input type="file" id="file2"  name="file2"/>
  <input type="button"  value="确认上传"   onclick="uploadFile()"/> 
</form>

<!--  <form id="uploadForm" action="/20190419_V1.0_hbsb/test/upload" enctype="multipart/form-data">
  <input type="file" id="file"  name="file"/>
    <input type="file" id="file"  name="file"/>
      <input type="file" id="file"  name="file"/>
  <input type="submit"  value="多文件上传"/> 	
</form>	 -->
</body>
</html>

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南归北隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值