SpringBoot实现单个和多个文件上传
2019-07-30 11:16
399 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43957143/article/details/97761140
SpringBoot开发web项目,有一个MultipartFile接口。继承InputStreamSource,这个接口就是用来处理文件上传和保存。
1.写一个前端上传文件的页面:picUpload.html
<!DOCTYPE HTML> <html> <head> <title>pictureUploading</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8 "> </head> <body> <form enctype="multipart/form-data" method="post" action="/upload"> 文件:<input type="file" name="fileUpload"/><br/> <input type="submit" value="上传"/> </form> <form enctype="multipart/form-data" method="post" action="/uploads"> 多个文件:<input type="file" name="file" multiple="multiple"/><br/> <input type="submit" value="上传" /> </form> </body> </html>
页面放在templates包下面,自己创建一个upload包,用来放上传文件按页面:当然也可以直接放在tempates包下面
如果访问不到,可以参考一下链接:
SpringBoot如何返回(访问)到template下面的html页面
2.MVC模式下,Controller返回页面:
@RequestMapping("/picUpload") public String picUpload(){ return "/upload/picUpload.html"; }
3.处理上传的单个文件:
@PostMapping("/upload") @ResponseBody public Object upload(MultipartFile fileUpload){ if(fileUpload.isEmpty()){ return "文件为空"; } //获取文件名 String fileName = fileUpload.getOriginalFilename(); //获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //指定本地文件夹存储图片 String filePath = "C:/IDEA/WorkSpace/helloWorld/src/main/resources/upload/"; try { //将图片保存到static文件夹里 fileUpload.transferTo(new File(filePath+fileName)); return "上传成功"; } catch (Exception e) { e.printStackTrace(); return "上传失败"; } }
箭头处是文件保存的路径:记得最后一个地方+“ / ”,否则只是保存在上一级路径下面。这里的upload文件是我临时建的。
4.处理多个文件上传:
@PostMapping("/uploads") @ResponseBody public Object uploads(MultipartFile[] file){ for(int i=0;i<file.length;i++) { MultipartFile fileUpload=file[i]; //获取文件名 String fileName = fileUpload.getOriginalFilename(); //获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //指定本地文件夹存储图片 String filePath = "C:/IDEA/WorkSpace/helloWorld/src/main/resources/upload/"; try { //将图片保存到static文件夹里 fileUpload.transferTo(new File(filePath + fileName)); } catch(Exception e) { e.printStackTrace(); return "上传失败"; } } return "上传成功"; }
箭头这里我用的数组就可以了,也可使用HttpServlet处理。
5.启动项目,输入地址:http://localhost:8080/picUpload 测试:
点击选择文件,我们选择一张图片测试:
点击上传:返回上传成功,就是上传成功。
再到项目保存路径下寻找一下上传的文件是否存在:
表示我们上传成功。
同样的方法测试上传多个即可以了。
6.最后看一下核心类MultipartFile:
接口是在org.springframework.web.multipart.MultipartFile包下面,所以它是Spring-Web包下的,
接口继承了InputStreamSource
接口InputStreamSource是org.springframework.core.io包下的,看的出来时Spring核心IO包,可以理解为特殊的JAVA中的IO流。打开源码,我们看注解,也可得知:import java.io.IOException;;import java.io.InputStream;
相关文章推荐
- struts2文件上传(使用struts2自带上传方式实现单个文件上传)
- VB中用inet控件通过FTP实现单个文件和多个文件的上传
- HtmlInputFile实现单个文件上传
- 实现ftp单个文件上传
- struts2实现单个和多个文件的上传
- springboot单个文件、多个文件上传
- 使用html+ajax+formdata+SpringMVC实现单个文件,和多个文件上传功能
- 【代码】php 怎样实现单个文件上传
- PHP实现批量上传单个文件
- struts2开发6--在struts2中实现单个文件上传
- 使用commons-fileupload实现单个和多个文件上传
- SpringBoot实现文件上传和下载
- jspsmartupload组件实现单个或多个文件上传(上)
- js实现上传单个文件
- Struts2:单个文件上传的两种实现方式
- struts2实现文件上传(单个、批量文件上传)
- springboot实现多文件上传
- Spring MVC 全注解的方式实现单个和多个文件上传
- ajaxfileupload实现单个或多个文件的上传
- SpringBoot实现文件上传下载的功能