spring boot文件的上传下载

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


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


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

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

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





Insert title here


下载

前端页面部分和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,这两个属性。

你可能感兴趣的:(spring,boot)