springMVC方式上传
SpringMVC使用框架提供的文件解析器对象,可以直接将请求体中的文件数据转为MultipartFile对象,从而省略原生上传中分析请求体的步骤。
- 在springMVC核心配置文件中配置文件解析器
<!--文件解析器对象 id名称必须是multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 支持一次上传文件的总容量,单位:字节 100M = 100*1024*1024-->
<property name="maxUploadSize" value="104857600"></property>
<!-- 文件名的编码方式-->
<property name="defaultEncoding" value="utf-8"></property>
</bean>
- 创建JSP表单
<%--
Created by IntelliJ IDEA.
User: zhangdi
Date: 2022/6/23
Time: 11:08
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<form action="/fileUpload2" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
- 编写控制器接受上传请求
@RequestMapping("/fileUpload2")
public String upload2(MultipartFile file, HttpServletRequest request) throws IOException {
//创建文件夹 存放上传文件
String realPath = request.getSession().getServletContext().getRealPath("/upload");
File dir = new File(realPath);
if(!dir.exists()){
dir.mkdir();
}
//将上传的数据写入到文件夹的文件中
//1.拿到上传的文件名
String filename = file.getOriginalFilename();
filename = UUID.randomUUID() + "_" + filename;
//2创建空文件夹
File newFile = new File(dir, filename);
//3.将数据写入到空文件
file.transferTo(newFile);
return "index";
}
上传多文件
- 创建JSP表单
2. 编写控制器
异步上传
之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。
- 编写JSP页面,引入jQuery和jQuery表单上传工具
- 编写控制器接收异步上传请求
跨服务器上传
详见文档
文件下载
详见文档