springMVC文件上传

129 阅读1分钟

springMVC方式上传

SpringMVC使用框架提供的文件解析器对象,可以直接将请求体中的文件数据转为MultipartFile对象,从而省略原生上传中分析请求体的步骤。

  1. 在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>
  1. 创建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>
  1. 编写控制器接受上传请求
@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";
}

上传多文件

  1. 创建JSP表单

image.png 2. 编写控制器

image.png

image.png

异步上传

之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。

  1. 编写JSP页面,引入jQuery和jQuery表单上传工具

image.png image.png

  1. 编写控制器接收异步上传请求

image.png image.png

跨服务器上传

详见文档

文件下载

详见文档