spring boot文件的上传下载

来源:互联网 发布:java考勤管理系统源码 编辑:程序博客网 时间:2024/05/16 19:40

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,这两个属性。

0 0