一、文件上传;
1) 前台表达提交文件;
upload.jsp页面:
<body> <%--文件上传必须指定为post方式提交表单 enctype:指定为ultipart/form-data --%> <form action="${pageContext.request.contextPath}/fileUpload" method="post" enctype="multipart/form-data"> 选择上传的文件:<input type="file" name="headPic"/><br/> <input type="submit" value="上传"/> </form> </body>
2) 后台写控制层方法接收并保存文件;
@Controller public class FileController { /** * MultipartFile:用来接收前台传递的文件对象 * **/ @RequestMapping("/fileUpload") public String upload(MultipartFile headPic) throws IOException { //获取到上传的文件名 String filename=headPic.getOriginalFilename(); System.out.println("文件名:"+filename);//a.jpg //设定保存的路径 String savePath="E:/upload/"; //创建文件对象 File file=new File(savePath+filename); if (!file.getParentFile().exists()){ file.getParentFile().mkdirs();//如果父目录不存在创建目录 } //将上传的文件保存到指定的文件对象中 headPic.transferTo(file); return "download.jsp"; }
3) 在springmvc配置文件中配置上传的一些参数;
<!-- 配置文件上传--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置文件编码格式--> <property name="defaultEncoding" value="UTF-8"></property> <!-- 设置最大上传大小,单位为字节,1kb=1024byte,1M=1024kb--> <property name="maxUploadSize" value="10485760"></property> </bean>
打开tomcat服务器测试之后,就可以在我们的E盘upload目录下查看是否有我们上传的图片了,如果存在,则说明上传成功,反之,则失败;
二、文件下载;
1)先写一个前台表达式的下载页面,即上一个文件上传后会跳转的下载页面;
download.jsp页面:
<body> 上传成功,文件下载 <a href="${pageContext.request.contextPath}/fileDownload?fileName=1.jpg">下载</a> </body>
2)后台写控制层方法并下载文件;
@RequestMapping("/fileDownload") public ResponseEntity<byte[]> download(String fileName) throws IOException { //设定保存的路径 String savePath="E:/upload/"; File file=new File(savePath+fileName); if (!file.exists()){//如果文件不存在 return null; } //构建响应头 HttpHeaders headers=new HttpHeaders(); //设置以附件形式打开,设定附件文件名 headers.setContentDispositionFormData("attachment",fileName); List<MediaType> accept=headers.getAccept(); for (MediaType mediaType:accept) { //设置ContentType为Stream headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); } byte[] bytes= FileUtils.readFileToByteArray(file); return new ResponseEntity<byte[]>( bytes,//文字的字节数组 headers, HttpStatus.CREATED); }
3)在springmvc配置文件中配置下载的一些参数;
<!-- 静态资源映射:将请求路由到对应的目录 mapping:指定请求路径; location:指定目录; file:磁盘路径 /upload/a.jpg==>返回E:/upload/a.jpg --> <mvc:resources mapping="/upload/**" location="file:E:/upload/"/> <!-- 映射项目内部资源 /staticFile/js/jquery-3.2.1.mini.js==>/WEB-INF/static/js/jquery-3.2.1.mini.js --> <mvc:resources mapping="/staticFile/**" location="/WEB-INF/static/"/>
结果:不同的浏览器设置不同,有些会提示出一个下载位置的窗口,有些点击下载后直接下载,反正只要是下载,即说明测试成功了;
原文:https://www.cnblogs.com/xie-qi/p/12984695.html