spring boot 引入”约定大于配置“的概念,实现自动配置,节约了开发人员的开发成本,并且凭借其微服务架构的方式,一出来就占据大片开发人员的芳心。然而对于刚开始使用它的人来说是比较不习惯的,因为大部分的配置从开发人员可见变成了相对透明了,要想进一步熟悉还需要关注源码,对于spring boot 新人来说使用是比较吃力的。


为了记录自己对spring boot的学习,同时也可以对正在学习spring boot的同学提供一个demo。特写下这篇比较粗犷的博文。


spring boot搭建就不说了,详情请看spring官网spring boot quickly start篇。

废话不多说,先看文件上传:

对于文件上传使用springMVC的同学应该知道MultipartHttpServletRequest这个玩意,在spring boot中也是用它。首先我们看demo页面。

<!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>Insert title here</title>
</head>
<body>
<form action="/testUpload" method="POST" enctype="multipart/form-data">
	<input type="file" name="file"/>
	<input type="submit" />
</form>
<a href="/testDownload">下载</a>
</body>
</html>

前端页面部分和springMVC完全一样(ps:本来spring boot就不是新的方案解决框架,只是改变了框架的使用方式而已)

后端代码也很简单,按上面说的,使用MultipartHttpServletRequest来处理上传请求,然后将接收到的文件以流的形式写入到服务器文件中。

@RequestMapping(value="/testUpload",method=RequestMethod.POST)
	public void testUploadFile(HttpServletRequest req,MultipartHttpServletRequest multiReq) throws IOException{
		FileOutputStream fos=new FileOutputStream(new File("F://test//src//file//upload.jpg"));
		FileInputStream fs=(FileInputStream) multiReq.getFile("file").getInputStream();
		byte[] buffer=new byte[1024];
		int len=0;
		while((len=fs.read(buffer))!=-1){
			fos.write(buffer, 0, len);
		}
		fos.close();
		fs.close();
	}

同理对于文件下载同样简单,只需要将文件写到输出流里:

@RequestMapping(value="/testDownload",method=RequestMethod.GET)
	public void testDownload(HttpServletResponse res) throws IOException{
		String fileName="upload.jpg";
		res.setHeader("content-type", "application/octet-stream");
		res.setContentType("application/octet-stream");
		res.setHeader("Content-Disposition", "attachment;filename=CourseResource.jpg");
		File file=new File("F://BaiduYunDownload//testRedis//src//file//upload.jpg");
		
		FileOutputStream fos=new FileOutputStream(file);
	
		res.setContentLengthLong(file.length());
		fos.close();
	}


在这个过程中完全不需要任何配置,不过如果你要设定上传文件的大小设定,那么你可以再application.properties中分别用

multipart.maxFileSize,multipart.maxRequestSize,这两个属性。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐