11【SpringMVC的文件上传】

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 11【SpringMVC的文件上传】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文


五、文件上传

5.1 回顾文件上传

表单的entype类型必须改为multipart/form-data,提交方式必须为post提交(因为post提交才有请求体)

引入依赖:

<dependencies>
    <!--SpringMVC依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>

    <!--Json转换-->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>

    <!--Tomcat依赖-->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-api</artifactId>
        <version>8.5.41</version>
    </dependency>

    <!--文件上传依赖-->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.4</version>
    </dependency>
</dependencies>

5.2 SpringMVC处理文件上传

5.2.1 配置文件上传解析器

<!--
    配置文件上传的解析器
    bean名称必须为: multipartResolver
 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--文件上传时文件的最大大小(单位:字节)-->
    <property name="maxUploadSize" value="102400000"></property>
    <!--文件上传时,文件名称的编码-->
    <property name="defaultEncoding" value="UTF-8"></property>
</bean>

5.3.2 准备表单

  • Demo01.jsp:
<form action="/demo03/demo01" enctype="multipart/form-data" method="post">
    <input type="file" name="pic">
    <input type="submit">
</form>

5.3.3 编写处理器

package com.dfbz.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.UUID;

/**
 * @author lscl
 * @version 1.0
 * @intro:
 */
@Controller
@RequestMapping("/demo01")
public class Demo01Controller {

    @RequestMapping("/demo01")
    public void demo01(
        // 当表单项名称和形参名不一样可以使用@RequestPart注解来指定名称
        @RequestPart("pic") MultipartFile pic,      
        HttpServletResponse response) throws Exception {


        // 表单项的名称
        String name = pic.getName();

        // 文件的名称
        String fileName = pic.getOriginalFilename();

        // 文件的大小
        long size = pic.getSize();

        // 请求的类型
        String contentType = pic.getContentType();

        // 将前端传递的文件写入到磁盘
        pic.transferTo(new File("D:/000/" + fileName));

        response.setContentType("text/html;charset=utf8");
        response.getWriter().write("<hr/ >name: " + name);
        response.getWriter().write("<hr/ >fileName: " + fileName);
        response.getWriter().write("<hr/ >size: " + size);
        response.getWriter().write("<hr/ >contentType: " + contentType);
    }
}

5.3 多文件上传

5.3.1 准备表单

<form action="/demo01/demo02" enctype="multipart/form-data" method="post">
    <input type="file" name="pics">
    <input type="file" name="pics">
    <input type="file" name="pics">
    <input type="file" name="pics">
    <input type="submit">
</form>

5.3.2 编写处理器

/**
 * 多文件上传
 *
 * @param pics
 * @throws Exception
 */
@RequestMapping("/demo02")
@ResponseBody
public String demo02(MultipartFile[] pics) throws Exception {

    for (MultipartFile file : pics) {
        file.transferTo(new File("D:/000/" + UUID.randomUUID() + "-" + file.getOriginalFilename()));
    }
    return "success";
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131646.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!