SpringMVC文件上传下载
Spring通过MultipartResolver实现文件上传的。
Spring上传组件定义在org.springframework.web.multipart包中。
默认情况下,Spring MVC上下文中没有装配MultipartResolver。如果要使用Spring的文件上传功能,需要先进行配置。
springmvc.xml中要加上这个
<!--文件上传解析器--> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver"> <property name="maxUploadSize" value="2097152"/> </bean>
控制层方法:
我也记不住这东西,都是跟着教程敲得,为了有一天能用上,保留在这儿
package top.yibobo.controller; import org.apache.commons.io.FileUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; @Controller public class FileController { @RequestMapping("/upload") public String upload(MultipartFile myPic, HttpSession session) throws IOException { //获得保存文件目录的绝对路径 String path = session.getServletContext().getRealPath("images"); //取得原始文件名 String fileName = myPic.getOriginalFilename(); File file = new File(path,fileName); //转存文件到指定路径 myPic.transferTo(file); session.setAttribute("fileName",fileName); return "suc"; } @RequestMapping("/download") public ResponseEntity<byte[]> download(String fileName,HttpSession session) throws IOException { //获得保存文件目录的绝对路径 String path = session.getServletContext().getRealPath("images"); //要下载的文件 File file = new File(path,fileName); //响应头部对象数据 HttpHeaders headers = new HttpHeaders(); //定义响应内容类型为流 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //通知浏览器以附件形式保存文件 headers.setContentDispositionFormData("attachment",fileName); return new ResponseEntity<>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK); } }
pom.xml中需要加上这个
<!--文件上传下载--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency>
上传下载的jsp文件
<%-- Created by IntelliJ IDEA. User: pyb Date: 2018/6/25 Time: 13:58 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <%@include file="commons/basePath.jsp"%> <title>上传</title> <form action="upload" method="post" enctype="multipart/form-data"> <p>请选择上传文件<input type="file" name="myPic"></p> <p><input type="submit" value="提交"></p> </form> </head> <body> </body> </html>
<%-- Created by IntelliJ IDEA. User: pyb Date: 2018/6/25 Time: 14:15 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <%@include file="commons/basePath.jsp"%> <title>tupian</title> </head> <body> <div> <img src="images/${fileName}"> <p><a href="download?fileName=${fileName}">点击下载</a></p> </div> </body> </html>