SpringMVC框架 |文件下载与文件上传


一、SpringMVC支持文件下载

假设要下载项目中的jQuery-3.4.1.js文件。

	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(HttpServletRequest request) throws Exception {
		// 1.得到要下载文件的真实路径
		ServletContext servletContext = request.getServletContext();
		String realPath = servletContext.getRealPath("/jQuery/jQuery-3.4.1.js");
		// 2.得到要下载的文件的流
		FileInputStream is = new FileInputStream(realPath);
		byte[] temp = new byte[is.available()];// 使用available获取的大小和文件大小相同
		is.read(temp);
		is.close();
		// 3.将要下载的文件流返回
		HttpHeaders httpHeaders = new HttpHeaders();// 自定义响应头
		httpHeaders.set("Content-Disposition", "attachment;filename=jQuery-3.4.1.js");
		return new ResponseEntity<byte[]>(temp, httpHeaders, HttpStatus.OK);
	}

使用该路径请求访问项目时,就会出现下载提示:
在这里插入图片描述

二、SpringMVC支持文件上传

1.导入文件上传的两个jar包

在这里插入图片描述

2.index.jsp前端页面

  • 文件上传表单准备:enctype="multipart/form-data"
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
		<%
			pageContext.setAttribute("ctp",request.getContextPath());
		%>
	</head>
	<body>
		${msg }
		<form action="${ctp }/upload" method="post" enctype="multipart/form-data">
			用户头像:<input type="file" name="headerimg" /><br/>
			用户名:<input type="text" name="username"/><br/>
			<input type="submit"/>
		</form>
	</body>

3.配置文件上传解析器

  • maxUploadSize参数为上传最大限制大小。
	<!-- 配置文件上传解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="#{1024*1024*20}"></property>
		<property name="defaultEncoding" value="utf-8"></property>
	</bean>

4.文件上传请求处理

  • 使用@RequestParam("headerimg") MultipartFile file封装文件信息。
	@RequestMapping("/upload")
	public String upload(@RequestParam(value = "username", required = false) String username,
			@RequestParam("headerimg") MultipartFile file, Model model) {
		System.out.println("上传的文件的信息:");
		System.out.println("文件项的名字:" + file.getName());
		System.out.println("文件名:" + file.getOriginalFilename());
		// 文件保存
		try {
			file.transferTo(new File("D:\\AAA\\" + file.getOriginalFilename()));
			model.addAttribute("msg", "文件上传成功了");
		} catch (IllegalStateException | IOException e) {
			model.addAttribute("msg", "文件上传失败了" + e.getMessage());
		}
		return "forward:/index.jsp";
	}

填好表单,单击提交按钮后成功回显信息,并上传到了指定目录:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、多文件上传

与上面的单文件类似,不同地方只是需要将MultipartFile替换MultipartFile[]

	@RequestMapping("/upload")
	public String upload(@RequestParam(value = "username", required = false) String username,
			@RequestParam("headerimg") MultipartFile[] file, Model model) {
		System.out.println("上传的文件的信息:");
		for (MultipartFile multipartFile : file) {
			if (!multipartFile.isEmpty()) {
				try {
					model.addAttribute("msg", "文件上传成功");
					multipartFile.transferTo(new File("D:\\AAA\\" + multipartFile.getOriginalFilename()));
				} catch (IllegalStateException | IOException e) {
					model.addAttribute("msg", "文件上传失败" + e.getMessage());
				}
			}
		}
		return "forward:/index.jsp";
	}

在这里插入图片描述

发布了459 篇原创文章 · 获赞 1493 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/105599822