最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringMVC实现文件上传与下载代码示例
时间:2022-06-29 02:26:50 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下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配置文件
jsp" />
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.前端代码
文件上传
文件上传(单个文件单字段上传)
文件上传(多文件单字段上传)
文件上传(多文件多字段上传)
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
*/
@Controller
public 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:Users14823IdeaProjectsspringMVCfileuploadsrcmainwebappWEB-INFfile";
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:Users14823IdeaProjectsspringMVCfileuploadsrcmainwebappWEB-INFfile";
String[] filenames = new String[file.length];
// 只要上传过来的文件为空或者是不符合指定类型的都会上传失败
for (int i = 0; i
2.文件下载
文件下分为两种情况:
文件名称是纯英文字母的
文件名带有中文不处理会乱码的
1.前端代码
文件下载
2.后端代码
/**
* @author compass
* @version 1.0
* @date 2021-05-11 15:23
*/
@Controller
public class DownloadController {
// 非中文名称文件下载
@GetMapping("/download1.mvc")
public ResponseEntity fileDownload1(String filename,HttpServletRequest request) throws IOException {
String path="C:Users14823IdeaProjectsspringMVCfileuploadsrcmainwebappWEB-INFfile";
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:Users14823IdeaProjectsspringMVCfileuploadsrcmainwebappWEB-INFfile";
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;
}
}
相关文章
- 寂静岭2重制版最善良的博伊成就攻略 10-29
- 寂静岭2重制版锡帽成就解锁攻略分享 10-29
- 寂静岭2重制版潜伏接近成就解锁攻略 10-29
- 寂静岭2重制版比雾更快成就解锁攻略 10-29
- 暗喻幻想:ReFantazio无敌面料理获取攻略 10-29
- 暗喻幻想:ReFantazio召唤龙神条件说明 10-29