spring boot文件的上传下载
spring boot 引入”约定大于配置“的概念,实现自动配置,节约了开发人员的开发成本,并且凭借其微服务架构的方式,一出来就占据大片开发人员的芳心。然而对于刚开始使用它的人来说是比较不习惯的,因为大部分的配置从开发人员可见变成了相对透明了,要想进一步熟悉还需要关注源码,对于spring boot 新人来说使用是比较吃力的。为了记录自己对spring boot的学习,同时也可以对正在
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)