Spring文件上传(单文件上传):
首先导入依赖:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
配置applicationContext.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--扫描注解-->
<context:component-scan base-package="cn.mvc"></context:component-scan>
<!--Spring支持MVC注解-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--试图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
<mvc:default-servlet-handler/>
<!--文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxInMemorySize" value="5000000"/>
</bean>
</beans>
创建FileUpLoad类:
package cn.mvc.fileupload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
@Controller
@RequestMapping("/fileUpLoad")
public class FileUpLoad {
@RequestMapping("/fileUp")
public String fileupload(HttpSession session, MultipartFile file, String auth) throws IOException {
System.out.println(auth);
System.out.println(file);
if(!file.isEmpty()){
String filename = file.getOriginalFilename();
String path = session.getServletContext().getRealPath("/WEB-INF/upload");
File upfile = new File(path+"\\"+filename);
file.transferTo(upfile);
}
return "index";
}
}
两个页面Upload和index页面:
<%--
Created by IntelliJ IDEA.
User: WangDaYe
Date: 2019/11/11
Time: 11:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>FileUp</title>
</head>
<body>
<form action="/fileUpLoad/fileUp" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<%-- <input type="file" name="files">
<input type="file" name="files">--%>
<input type="text" name="auth">
<input type="submit" value="提交">
</form>
</body>
</html>
<%@page language="java" pageEncoding="utf-8" autoFlush="true" isELIgnored="false" contentType="text/html; utf-8"%>
<html>
<body>
<h2>Hello World!</h2>
<%-- <h1>文件上传</h1>
<form action="" method="post" enctype="multipart/form-data" >
用户名:<input type="text" name="username" ><br/>
文件上传:<input type="file" name="image" ><br/>
<input type="submit" ><br/>
</form>
<h1>文件下载</h1>
<a href="">下载</a>
<a href="">下载2</a>--%>
</body>
</html>
运行 添加文件:

提交之后添加成功 跳转到index页面

项目里就会出现:

多文件上传:
多文件上传只需修改如下两处
1.
<%--
Created by IntelliJ IDEA.
User: WangDaYe
Date: 2019/11/11
Time: 11:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>FileUp</title>
</head>
<body>
<form action="/fileUpLoad/fileUps" method="post" enctype="multipart/form-data">
<input type="file" name="files">
<input type="file" name="files">
<input type="file" name="files">
<input type="text" name="auth">
<input type="submit" value="提交">
</form>
</body>
</html>
2.
package cn.mvc.fileupload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
@Controller
@RequestMapping("/fileUpLoad")
public class FileUpLoad {
@RequestMapping("/fileUps")
public String fileuploads(HttpSession session, @RequestParam MultipartFile[] files, String auth) throws IOException {
System.out.println(auth);
System.out.println(files);
for (MultipartFile filee:files) {
if(!filee.isEmpty()){
String filename = filee.getOriginalFilename();
String path = session.getServletContext().getRealPath("/WEB-INF/upload");
File upfile = new File(path+"\\"+filename);
filee.transferTo(upfile);
}
}
return "index";
}
}
测似结果和上边一样只是多个文件而已
文件下载:
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
@Component
@Scope("prototype")
@RequestMapping("/downloadFile")
public class DownloadAction
{
@RequestMapping("download")
public ResponseEntity<byte[]> download() throws IOException {
String path="D:\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\springMVC\\WEB-INF\\upload\\图片10(定价后).xlsx";
File file=new File(path);
HttpHeaders headers = new HttpHeaders();
String fileName=new String("你好.xlsx".getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
headers, HttpStatus.CREATED);
}
}
<a href="./downloadFile/download" >下载</a>
在页面里面写上边一句,便可以下载文件