Spring boot实现文件上传功能
本文实例为大家分享了Springboot实现文件上传的具体代码,供大家参考,具体内容如下
1.创建一个Maven的web工程,然后配置pom.xml文件,增加依赖:
org.springframework.boot spring-boot-starter-web 1.0.2.RELEASE
2.在webapp目录下的index.jsp文件中输入一个表单:
Filetoupload:
Name:
Pressheretouploadthefile!
这个表单就是我们模拟的上传页面
3.编写处理这个表单的Controller:
importjava.io.BufferedOutputStream; importjava.io.File; importjava.io.FileOutputStream; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.bind.annotation.ResponseBody; importorg.springframework.web.multipart.MultipartFile; @Controller publicclassFileUploadController{ @RequestMapping(value="/upload",method=RequestMethod.GET) public@ResponseBodyStringprovideUploadInfo(){ return"YoucanuploadafilebypostingtothissameURL."; } @RequestMapping(value="/upload",method=RequestMethod.POST) public@ResponseBodyStringhandleFileUpload(@RequestParam("name")Stringname, @RequestParam("file")MultipartFilefile){ if(!file.isEmpty()){ try{ byte[]bytes=file.getBytes(); BufferedOutputStreamstream= newBufferedOutputStream(newFileOutputStream(newFile(name+"-uploaded"))); stream.write(bytes); stream.close(); return"Yousuccessfullyuploaded"+name+"into"+name+"-uploaded!"; }catch(Exceptione){ return"Youfailedtoupload"+name+"=>"+e.getMessage(); } }else{ return"Youfailedtoupload"+name+"becausethefilewasempty."; } } }
4.然后我们对上传的文件做一些限制,同时编写main方法来启动这个web:
importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.EnableAutoConfiguration; importorg.springframework.boot.context.embedded.MultiPartConfigFactory; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.ComponentScan; importorg.springframework.context.annotation.Configuration; importjavax.servlet.MultipartConfigElement; @Configuration @ComponentScan @EnableAutoConfiguration publicclassApplication{ @Bean publicMultipartConfigElementmultipartConfigElement(){ MultiPartConfigFactoryfactory=newMultiPartConfigFactory(); factory.setMaxFileSize("128KB"); factory.setMaxRequestSize("128KB"); returnfactory.createMultipartConfig(); } publicstaticvoidmain(String[]args){ SpringApplication.run(Application.class,args); } }
5.然后访问http://localhost:8080/upload就可以看到页面了。
上面的例子是实现的是单个文件上传的功能,假定我们现在要实现文件批量上传的功能的话,我们只需要简单的修改一下上面的代码就行,考虑到篇幅的问题,下面只是贴出和上面不同的代码,没有贴出的说明和上面一样。:
1.新增batchUpload.jsp文件
Filetoupload:
Filetoupload:
Pressheretouploadthefile!
2.新增BatchFileUploadController.java文件:
importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.bind.annotation.ResponseBody; importorg.springframework.web.multipart.MultipartFile; importorg.springframework.web.multipart.MultipartHttpServletRequest; importjavax.servlet.http.HttpServletRequest; importjava.io.BufferedOutputStream; importjava.io.File; importjava.io.FileOutputStream; importjava.util.List; /** *Createdbywenchao.renon2014/4/26. */ @Controller publicclassBatchFileUploadController{ @RequestMapping(value="/batch/upload",method=RequestMethod.POST) public@ResponseBody StringhandleFileUpload(HttpServletRequestrequest){ Listfiles=((MultipartHttpServletRequest)request).getFiles("file"); for(inti=0;i "+e.getMessage(); } }else{ return"Youfailedtoupload"+name+"becausethefilewasempty."; } } return"uploadsuccessful"; } }
这样一个简单的批量上传文件的功能就ok了,是不是很简单啊。
注意:上面的代码只是为了演示而已,所以编码风格上采取了随性的方式,不建议大家模仿。
参考资料:MultipartResolver实现文件上传功能
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
1.MultipartResolver也可以实现文件上传功能。参考文章:
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。