SpringMVC怎么实现文件的上传和下载
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关SpringMVC怎么实现文件的上传和下载的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下0.环境准备1.maven依赖
千家信息网最后更新 2026年11月04日SpringMVC怎么实现文件的上传和下载0.环境准备
1.文件上传
这篇文章给大家分享的是有关SpringMVC怎么实现文件的上传和下载的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
具体内容如下
0.环境准备
1.maven依赖
org.junit.jupiter junit-jupiter-api 5.7.0 test javax.servlet javax.servlet-api 3.1.0 provided org.springframework spring-webmvc 5.2.6.RELEASE commons-io commons-io 2.8.0 commons-fileupload commons-fileupload 1.3.3 2.springConfig。xml配置文件
3.web.xml配置
web org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springConfig.xml 1 web *.mvc characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 forRequestEncoding true forResponseEncoding true characterEncodingFilter /* 1.文件上传
文件上传分为三种方式:
单个文件单字段
多个文件单字段
多个文件多字段
注意点:
1、提交方式为表单的post请求
2、from属性中必须有enctype="multipart/form-data"
3、如果是单字段多文件:输入框中的属性必须为:multiple="multiple"
4、表单中的属性name必须和后端参数一致
1.前端代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 文件上传 文件上传(单个文件单字段上传)
文件上传(多文件单字段上传)
文件上传(多文件多字段上传)
2.后端代码
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpSession;import java.io.File;import java.io.IOException;/** * @author compass * @version 1.0 * @date 2021-05-11 14:33 */@Controllerpublic class UploadIFileController { // 处理单个文件上传 @PostMapping("/uploadFile1.mvc") public ModelAndView uploadFile1(MultipartFile file, HttpSession session) throws IOException { ModelAndView view = new ModelAndView(); // 得到文件名称 String filename=file.getOriginalFilename(); System.out.println("文件名称:"+filename); if (!file.isEmpty()){ // 判断文件的后缀 if (filename.endsWith(".jpg")||filename.endsWith(".png")||filename.endsWith(".txt")); //设置文件的保存路径 String savePath="C:\Users\14823\IdeaProjects\springMVC\fileupload\src\main\webapp\WEB-INF\file"; File srcFile = new File(savePath,filename); // 执行文件保存操作 file.transferTo(srcFile); view.setViewName("forward:/uploadSuccess.jsp"); }else { view.setViewName("forward:/uploadFailed.jsp"); } return view; } // 处理多文件上传 @PostMapping("/uploadFile2.mvc") public ModelAndView uploadFile2(MultipartFile[] file,HttpSession session) throws IOException { ModelAndView view = new ModelAndView(); //设置文件的保存路径 String savePath="C:\Users\14823\IdeaProjects\springMVC\fileupload\src\main\webapp\WEB-INF\file"; String[] filenames = new String[file.length]; // 只要上传过来的文件为空或者是不符合指定类型的都会上传失败 for (int i = 0; i 2.文件下载
文件下分为两种情况:
文件名称是纯英文字母的
文件名带有中文不处理会乱码的
1.前端代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 文件下载 文件下载(非中文名称)
文件下载(中文名称)
2.后端代码
/** * @author compass * @version 1.0 * @date 2021-05-11 15:23 */@Controllerpublic class DownloadController { // 非中文名称文件下载 @GetMapping("/download1.mvc") public ResponseEntity fileDownload1(String filename,HttpServletRequest request) throws IOException { String path="C:\Users\14823\IdeaProjects\springMVC\fileupload\src\main\webapp\WEB-INF\file\"; File file = new File(path,filename); HttpHeaders header = new HttpHeaders(); header.setContentDispositionFormData("attachment",filename); header.setContentType(MediaType.APPLICATION_OCTET_STREAM); ResponseEntity result = new ResponseEntity<>(FileUtils.readFileToByteArray(file), header, HttpStatus.OK); return result; } // 中文名称文件下载 @GetMapping("/download2.mvc") public ResponseEntity fileDownload2(String filename,HttpServletRequest request) throws IOException { System.out.println(filename); String path="C:\Users\14823\IdeaProjects\springMVC\fileupload\src\main\webapp\WEB-INF\file\"; filename = filename.replace("_", "%"); filename= URLDecoder.decode(filename,"UTF-8"); String downloadFile=""; if (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie")>0){ filename= URLEncoder.encode(filename,"UTF-8"); downloadFile=filename.replaceAll("+","%20"); }else { downloadFile=new String(filename.getBytes("UTF-8"),"ISO-8859-1"); } File file = new File(path,filename); HttpHeaders header = new HttpHeaders(); header.setContentDispositionFormData("attachment",downloadFile); header.setContentType(MediaType.APPLICATION_OCTET_STREAM); ResponseEntity result = new ResponseEntity<>(FileUtils.readFileToByteArray(file), header, HttpStatus.OK); return result; }} 感谢各位的阅读!关于"SpringMVC怎么实现文件的上传和下载"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
文件
名称
字段
文件下载
中文
代码
内容
单个
属性
UTF-8
前端
多个
方式
更多
篇文章
类型
表单
路径
处理
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
中关村互联网 科技集团
河南真二互联网科技有限公司
重庆互联网络科技
互联网科技的发展
嘟嘟瓜互联网科技
唐信互联网科技
狮子座互联网科技有限公司
互联网科技logo
天下捷融互联网科技
亿人帮互联网科技
互联网科技股有哪些
深圳市运趣互联网科技有限公司
崇明区互联网教育科技诚信经营
千方科技属于互联网企业吗
互联网金融科技展
中国互联网公司排名锤子科技
深圳市罗太互联网科技有限公司
唐山双旺合互联网科技产业园
现代科技的标志之一的互联网
蓝思科技飞鸽互联网
科技创新与互联网经济
互联网最新的科技有限公司
互联网科技与金融科技
鑫亿盛互联网科技
猫创互联网科技
互联网科技网站
领航科技大厦互联网公司
信承诺互联网科技有限公司
互联网科技快速发展优美句子